diff options
author | neb@chromium.org <neb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-07 21:25:33 +0000 |
---|---|---|
committer | neb@chromium.org <neb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-07 21:25:33 +0000 |
commit | c9253c2d2c0cc60f65d5a4728c9cb6a352c09131 (patch) | |
tree | 50b8110d3448404def23fd0601e40b25cc5c09d5 /ppapi | |
parent | b78f94325babe6b0e01812ffef36b57aeb45bfa7 (diff) | |
download | chromium_src-c9253c2d2c0cc60f65d5a4728c9cb6a352c09131.zip chromium_src-c9253c2d2c0cc60f65d5a4728c9cb6a352c09131.tar.gz chromium_src-c9253c2d2c0cc60f65d5a4728c9cb6a352c09131.tar.bz2 |
PPB_Class simple test.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6072003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70778 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r-- | ppapi/ppapi.gyp | 2 | ||||
-rw-r--r-- | ppapi/tests/test_class.cc | 50 | ||||
-rw-r--r-- | ppapi/tests/test_class.h | 32 |
3 files changed, 84 insertions, 0 deletions
diff --git a/ppapi/ppapi.gyp b/ppapi/ppapi.gyp index 10456ac..4af3e9c 100644 --- a/ppapi/ppapi.gyp +++ b/ppapi/ppapi.gyp @@ -493,6 +493,8 @@ 'tests/test_c_includes.c', 'tests/test_char_set.cc', 'tests/test_char_set.h', + 'tests/test_class.cc', + 'tests/test_class.h', 'tests/test_cpp_includes.cc', 'tests/test_directory_reader.cc', 'tests/test_directory_reader.h', diff --git a/ppapi/tests/test_class.cc b/ppapi/tests/test_class.cc new file mode 100644 index 0000000..e27e8fc --- /dev/null +++ b/ppapi/tests/test_class.cc @@ -0,0 +1,50 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ppapi/tests/test_class.h" + +#include <limits> + +#include "ppapi/c/dev/ppb_testing_dev.h" +#include "ppapi/c/pp_var.h" +#include "ppapi/c/ppb_class.h" +#include "ppapi/c/ppb_var.h" +#include "ppapi/cpp/instance.h" +#include "ppapi/cpp/module.h" +#include "ppapi/cpp/var.h" +#include "ppapi/tests/testing_instance.h" + +REGISTER_TEST_CASE(Class); + +bool TestClass::Init() { + class_interface_ = reinterpret_cast<const PPB_Class*>( + pp::Module::Get()->GetBrowserInterface(PPB_CLASS_INTERFACE)); + testing_interface_ = reinterpret_cast<const PPB_Testing_Dev*>( + pp::Module::Get()->GetBrowserInterface(PPB_TESTING_DEV_INTERFACE)); + if (!testing_interface_) { + // Give a more helpful error message for the testing interface being gone + // since that needs special enabling in Chrome. + instance_->AppendError("This test needs the testing interface, which is " + "not currently available. In Chrome, use --enable-pepper-testing when " + "launching."); + } + return class_interface_ && testing_interface_; +} + +void TestClass::RunTest() { + RUN_TEST(ConstructEmptyObject); +} + +std::string TestClass::TestConstructEmptyObject() { + PP_ClassProperty properties[] = { { NULL } }; + PP_Resource object_class = class_interface_->Create( + pp::Module::Get()->pp_module(), NULL, NULL, properties); + ASSERT_TRUE(object_class != 0); + + pp::Var instance(pp::Var::PassRef(), + class_interface_->Instantiate(object_class, NULL, NULL)); + ASSERT_TRUE(instance.is_object()); + return std::string(); +} + diff --git a/ppapi/tests/test_class.h b/ppapi/tests/test_class.h new file mode 100644 index 0000000..df38e479 --- /dev/null +++ b/ppapi/tests/test_class.h @@ -0,0 +1,32 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef PPAPI_TESTS_TEST_CLASS_H_ +#define PPAPI_TESTS_TEST_CLASS_H_ + +#include <string> + +#include "ppapi/tests/test_case.h" + +struct PPB_Class; +struct PPB_Testing_Dev; + +class TestClass : public TestCase { + public: + explicit TestClass(TestingInstance* instance) : TestCase(instance) {} + + // TestCase implementation. + virtual bool Init(); + virtual void RunTest(); + + private: + std::string TestConstructEmptyObject(); + + // Used by the tests that access the C API directly. + const PPB_Class* class_interface_; + const PPB_Testing_Dev* testing_interface_; +}; + +#endif // PPAPI_TESTS_TEST_VAR_H_ + |