| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "o3d/gpu_plugin/np_utils/dispatched_np_object.h" | 7 #include "o3d/gpu_plugin/np_utils/default_np_object.h" |
| 8 #include "o3d/gpu_plugin/np_utils/np_browser_stub.h" | 8 #include "o3d/gpu_plugin/np_utils/np_browser_stub.h" |
| 9 #include "o3d/gpu_plugin/np_utils/np_dispatcher.h" | 9 #include "o3d/gpu_plugin/np_utils/np_dispatcher.h" |
| 10 #include "o3d/gpu_plugin/np_utils/np_object_mock.h" |
| 10 #include "testing/gmock/include/gmock/gmock.h" | 11 #include "testing/gmock/include/gmock/gmock.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 13 |
| 13 using testing::Return; | 14 using testing::Return; |
| 14 using testing::StrictMock; | 15 using testing::StrictMock; |
| 15 | 16 |
| 16 namespace o3d { | 17 namespace o3d { |
| 17 namespace gpu_plugin { | 18 namespace gpu_plugin { |
| 18 | 19 |
| 19 // This mock class has a dispatcher chain with an entry for each mocked | 20 // This mock class has a dispatcher chain with an entry for each mocked |
| 20 // function. The tests that follow that invoking an NPAPI method calls the | 21 // function. The tests that follow that invoking an NPAPI method calls the |
| 21 // corresponding mocked member function. | 22 // corresponding mocked member function. |
| 22 class MockDispatchedNPObject : public DispatchedNPObject { | 23 class MockDispatchedNPObject : public DefaultNPObject<NPObject> { |
| 23 public: | 24 public: |
| 24 explicit MockDispatchedNPObject(NPP npp) | 25 explicit MockDispatchedNPObject(NPP npp) { |
| 25 : DispatchedNPObject(npp) { | |
| 26 } | 26 } |
| 27 | 27 |
| 28 MOCK_METHOD0(VoidReturnNoParams, void()); | 28 MOCK_METHOD0(VoidReturnNoParams, void()); |
| 29 MOCK_METHOD1(VoidReturnBoolParam, void(bool)); | 29 MOCK_METHOD1(VoidReturnBoolParam, void(bool)); |
| 30 MOCK_METHOD1(VoidReturnIntParam, void(int)); | 30 MOCK_METHOD1(VoidReturnIntParam, void(int)); |
| 31 MOCK_METHOD1(VoidReturnFloatParam, void(float)); | 31 MOCK_METHOD1(VoidReturnFloatParam, void(float)); |
| 32 MOCK_METHOD1(VoidReturnDoubleParam, void(double)); | 32 MOCK_METHOD1(VoidReturnDoubleParam, void(double)); |
| 33 MOCK_METHOD1(VoidReturnStringParam, void(std::string)); | 33 MOCK_METHOD1(VoidReturnStringParam, void(std::string)); |
| 34 MOCK_METHOD1(VoidReturnObjectParam, void(NPObjectPointer<BaseNPObject>)); | 34 MOCK_METHOD1(VoidReturnObjectParam, void(NPObjectPointer<NPObject>)); |
| 35 MOCK_METHOD2(VoidReturnTwoParams, void(bool, int)); | 35 MOCK_METHOD2(VoidReturnTwoParams, void(bool, int)); |
| 36 MOCK_METHOD0(Overloaded, void()); | 36 MOCK_METHOD0(Overloaded, void()); |
| 37 MOCK_METHOD1(Overloaded, void(bool)); | 37 MOCK_METHOD1(Overloaded, void(bool)); |
| 38 MOCK_METHOD1(Overloaded, void(std::string)); | 38 MOCK_METHOD1(Overloaded, void(std::string)); |
| 39 MOCK_METHOD0(BoolReturn, bool()); | 39 MOCK_METHOD0(BoolReturn, bool()); |
| 40 MOCK_METHOD0(IntReturn, int()); | 40 MOCK_METHOD0(IntReturn, int()); |
| 41 MOCK_METHOD0(FloatReturn, float()); | 41 MOCK_METHOD0(FloatReturn, float()); |
| 42 MOCK_METHOD0(DoubleReturn, double()); | 42 MOCK_METHOD0(DoubleReturn, double()); |
| 43 MOCK_METHOD0(StringReturn, std::string()); | 43 MOCK_METHOD0(StringReturn, std::string()); |
| 44 MOCK_METHOD0(ObjectReturn, NPObjectPointer<BaseNPObject>()); | 44 MOCK_METHOD0(ObjectReturn, NPObjectPointer<NPObject>()); |
| 45 | 45 |
| 46 protected: | 46 NP_UTILS_BEGIN_DISPATCHER_CHAIN(MockDispatchedNPObject, DefaultNPObject<NPObje
ct>) |
| 47 NP_UTILS_BEGIN_DISPATCHER_CHAIN(MockDispatchedNPObject, DispatchedNPObject) | |
| 48 NP_UTILS_DISPATCHER(VoidReturnNoParams, void()) | 47 NP_UTILS_DISPATCHER(VoidReturnNoParams, void()) |
| 49 NP_UTILS_DISPATCHER(VoidReturnBoolParam, void(bool)) | 48 NP_UTILS_DISPATCHER(VoidReturnBoolParam, void(bool)) |
| 50 NP_UTILS_DISPATCHER(VoidReturnIntParam, void(int)) | 49 NP_UTILS_DISPATCHER(VoidReturnIntParam, void(int)) |
| 51 NP_UTILS_DISPATCHER(VoidReturnFloatParam, void(float)) | 50 NP_UTILS_DISPATCHER(VoidReturnFloatParam, void(float)) |
| 52 NP_UTILS_DISPATCHER(VoidReturnDoubleParam, void(double)) | 51 NP_UTILS_DISPATCHER(VoidReturnDoubleParam, void(double)) |
| 53 NP_UTILS_DISPATCHER(VoidReturnStringParam, void(std::string)) | 52 NP_UTILS_DISPATCHER(VoidReturnStringParam, void(std::string)) |
| 54 NP_UTILS_DISPATCHER(VoidReturnObjectParam, | 53 NP_UTILS_DISPATCHER(VoidReturnObjectParam, void(NPObjectPointer<NPObject>)) |
| 55 void(NPObjectPointer<BaseNPObject>)) | |
| 56 NP_UTILS_DISPATCHER(VoidReturnTwoParams, void(bool, int)) | 54 NP_UTILS_DISPATCHER(VoidReturnTwoParams, void(bool, int)) |
| 57 NP_UTILS_DISPATCHER(Overloaded, void()) | 55 NP_UTILS_DISPATCHER(Overloaded, void()) |
| 58 NP_UTILS_DISPATCHER(Overloaded, void(bool)) | 56 NP_UTILS_DISPATCHER(Overloaded, void(bool)) |
| 59 NP_UTILS_DISPATCHER(Overloaded, void(std::string)) | 57 NP_UTILS_DISPATCHER(Overloaded, void(std::string)) |
| 60 NP_UTILS_DISPATCHER(BoolReturn, bool()) | 58 NP_UTILS_DISPATCHER(BoolReturn, bool()) |
| 61 NP_UTILS_DISPATCHER(IntReturn, int()) | 59 NP_UTILS_DISPATCHER(IntReturn, int()) |
| 62 NP_UTILS_DISPATCHER(FloatReturn, float()) | 60 NP_UTILS_DISPATCHER(FloatReturn, float()) |
| 63 NP_UTILS_DISPATCHER(DoubleReturn, double()) | 61 NP_UTILS_DISPATCHER(DoubleReturn, double()) |
| 64 NP_UTILS_DISPATCHER(StringReturn, std::string()) | 62 NP_UTILS_DISPATCHER(StringReturn, std::string()) |
| 65 NP_UTILS_DISPATCHER(ObjectReturn, NPObjectPointer<BaseNPObject>()); | 63 NP_UTILS_DISPATCHER(ObjectReturn, NPObjectPointer<NPObject>()); |
| 66 NP_UTILS_END_DISPATCHER_CHAIN | 64 NP_UTILS_END_DISPATCHER_CHAIN |
| 67 }; | 65 }; |
| 68 | 66 |
| 69 class DispatchedNPObjectTest : public testing::Test { | 67 class DispatchedNPObjectTest : public testing::Test { |
| 70 protected: | 68 protected: |
| 71 virtual void SetUp() { | 69 virtual void SetUp() { |
| 72 object_ = NPCreateObject<StrictMock<MockDispatchedNPObject> >(NULL); | 70 object_ = NPCreateObject<StrictMock<MockDispatchedNPObject> >(NULL); |
| 73 passed_object_ = NPCreateObject<BaseNPObject>(NULL); | 71 passed_object_ = NPCreateObject<MockNPObject>(NULL); |
| 74 | 72 |
| 75 for (int i = 0; i != arraysize(args_); ++i) { | 73 for (int i = 0; i != arraysize(args_); ++i) { |
| 76 NULL_TO_NPVARIANT(args_[i]); | 74 NULL_TO_NPVARIANT(args_[i]); |
| 77 } | 75 } |
| 78 NULL_TO_NPVARIANT(result_); | 76 NULL_TO_NPVARIANT(result_); |
| 79 } | 77 } |
| 80 | 78 |
| 81 StubNPBrowser stub_browser_; | 79 StubNPBrowser stub_browser_; |
| 82 NPVariant args_[3]; | 80 NPVariant args_[3]; |
| 83 NPVariant result_; | 81 NPVariant result_; |
| 84 NPObjectPointer<MockDispatchedNPObject> object_; | 82 NPObjectPointer<MockDispatchedNPObject> object_; |
| 85 NPObjectPointer<BaseNPObject> passed_object_; | 83 NPObjectPointer<NPObject> passed_object_; |
| 86 }; | 84 }; |
| 87 | 85 |
| 88 TEST_F(DispatchedNPObjectTest, CannotInvokeMissingFunction) { | 86 TEST_F(DispatchedNPObjectTest, CannotInvokeMissingFunction) { |
| 89 EXPECT_FALSE(object_->Invoke( | 87 EXPECT_FALSE(object_->Invoke( |
| 90 NPBrowser::get()->GetStringIdentifier("missing"), | 88 NPBrowser::get()->GetStringIdentifier("missing"), |
| 91 NULL, | 89 NULL, |
| 92 0, | 90 0, |
| 93 &result_)); | 91 &result_)); |
| 94 EXPECT_TRUE(NPVARIANT_IS_VOID(result_)); | 92 EXPECT_TRUE(NPVARIANT_IS_VOID(result_)); |
| 95 } | 93 } |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 NPBrowser::get()->GetStringIdentifier("voidReturnObjectParam"), | 213 NPBrowser::get()->GetStringIdentifier("voidReturnObjectParam"), |
| 216 args_, | 214 args_, |
| 217 1, | 215 1, |
| 218 &result_)); | 216 &result_)); |
| 219 EXPECT_TRUE(NPVARIANT_IS_VOID(result_)); | 217 EXPECT_TRUE(NPVARIANT_IS_VOID(result_)); |
| 220 } | 218 } |
| 221 | 219 |
| 222 TEST_F(DispatchedNPObjectTest, CanInvokeVoidReturnObjectParamWithNull) { | 220 TEST_F(DispatchedNPObjectTest, CanInvokeVoidReturnObjectParamWithNull) { |
| 223 EXPECT_CALL( | 221 EXPECT_CALL( |
| 224 *object_, | 222 *object_, |
| 225 VoidReturnObjectParam(NPObjectPointer<BaseNPObject>())); | 223 VoidReturnObjectParam(NPObjectPointer<NPObject>())); |
| 226 | 224 |
| 227 NULL_TO_NPVARIANT(args_[0]); | 225 NULL_TO_NPVARIANT(args_[0]); |
| 228 | 226 |
| 229 EXPECT_TRUE(object_->Invoke( | 227 EXPECT_TRUE(object_->Invoke( |
| 230 NPBrowser::get()->GetStringIdentifier("voidReturnObjectParam"), | 228 NPBrowser::get()->GetStringIdentifier("voidReturnObjectParam"), |
| 231 args_, | 229 args_, |
| 232 1, | 230 1, |
| 233 &result_)); | 231 &result_)); |
| 234 EXPECT_TRUE(NPVARIANT_IS_VOID(result_)); | 232 EXPECT_TRUE(NPVARIANT_IS_VOID(result_)); |
| 235 } | 233 } |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 0, | 358 0, |
| 361 &result_)); | 359 &result_)); |
| 362 EXPECT_TRUE(NPVARIANT_IS_OBJECT(result_)); | 360 EXPECT_TRUE(NPVARIANT_IS_OBJECT(result_)); |
| 363 EXPECT_EQ(passed_object_.Get(), NPVARIANT_TO_OBJECT(result_)); | 361 EXPECT_EQ(passed_object_.Get(), NPVARIANT_TO_OBJECT(result_)); |
| 364 | 362 |
| 365 NPBrowser::get()->ReleaseVariantValue(&result_); | 363 NPBrowser::get()->ReleaseVariantValue(&result_); |
| 366 } | 364 } |
| 367 | 365 |
| 368 TEST_F(DispatchedNPObjectTest, CanInvokeObjectReturnWithNull) { | 366 TEST_F(DispatchedNPObjectTest, CanInvokeObjectReturnWithNull) { |
| 369 EXPECT_CALL(*object_, ObjectReturn()) | 367 EXPECT_CALL(*object_, ObjectReturn()) |
| 370 .WillOnce(Return(NPObjectPointer<BaseNPObject>())); | 368 .WillOnce(Return(NPObjectPointer<NPObject>())); |
| 371 | 369 |
| 372 EXPECT_TRUE(object_->Invoke( | 370 EXPECT_TRUE(object_->Invoke( |
| 373 NPBrowser::get()->GetStringIdentifier("objectReturn"), | 371 NPBrowser::get()->GetStringIdentifier("objectReturn"), |
| 374 NULL, | 372 NULL, |
| 375 0, | 373 0, |
| 376 &result_)); | 374 &result_)); |
| 377 EXPECT_TRUE(NPVARIANT_IS_NULL(result_)); | 375 EXPECT_TRUE(NPVARIANT_IS_NULL(result_)); |
| 378 } | 376 } |
| 379 | 377 |
| 380 TEST_F(DispatchedNPObjectTest, HasMethodReturnsTrueIfMatchingMemberVariable) { | 378 TEST_F(DispatchedNPObjectTest, HasMethodReturnsTrueIfMatchingMemberVariable) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 398 // returned. | 396 // returned. |
| 399 EXPECT_GT(num_names, 1u); | 397 EXPECT_GT(num_names, 1u); |
| 400 EXPECT_EQ(NPBrowser::get()->GetStringIdentifier("voidReturnNoParams"), | 398 EXPECT_EQ(NPBrowser::get()->GetStringIdentifier("voidReturnNoParams"), |
| 401 names[num_names - 1]); | 399 names[num_names - 1]); |
| 402 | 400 |
| 403 NPBrowser::get()->MemFree(names); | 401 NPBrowser::get()->MemFree(names); |
| 404 } | 402 } |
| 405 | 403 |
| 406 } // namespace gpu_plugin | 404 } // namespace gpu_plugin |
| 407 } // namespace o3d | 405 } // namespace o3d |
| OLD | NEW |