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 |