OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 // This test is a simple sanity check to make sure gmock is able to build/link | 5 // This test is a simple sanity check to make sure gmock is able to build/link |
6 // correctly. It just instantiates a mock object and runs through a couple of | 6 // correctly. It just instantiates a mock object and runs through a couple of |
7 // the basic mock features. | 7 // the basic mock features. |
8 | 8 |
9 #include "testing/gmock/include/gmock/gmock.h" | 9 #include "testing/gmock/include/gmock/gmock.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
11 | 11 |
12 // Gmock matchers and actions that we use below. | 12 // Gmock matchers and actions that we use below. |
13 using testing::AnyOf; | 13 using testing::AnyOf; |
14 using testing::Eq; | 14 using testing::Eq; |
15 using testing::Return; | 15 using testing::Return; |
16 using testing::SetArgumentPointee; | 16 using testing::SetArgPointee; |
17 using testing::WithArg; | 17 using testing::WithArg; |
18 using testing::_; | 18 using testing::_; |
19 | 19 |
20 namespace { | 20 namespace { |
21 | 21 |
22 // Simple class that we can mock out the behavior for. Everything is virtual | 22 // Simple class that we can mock out the behavior for. Everything is virtual |
23 // for easy mocking. | 23 // for easy mocking. |
24 class SampleClass { | 24 class SampleClass { |
25 public: | 25 public: |
26 SampleClass() {} | 26 SampleClass() {} |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 | 77 |
78 EXPECT_CALL(mock, ReturnNothingConstly()).Times(2); | 78 EXPECT_CALL(mock, ReturnNothingConstly()).Times(2); |
79 mock.ReturnNothingConstly(); | 79 mock.ReturnNothingConstly(); |
80 mock.ReturnNothingConstly(); | 80 mock.ReturnNothingConstly(); |
81 } | 81 } |
82 | 82 |
83 TEST(GmockTest, AssignArgument) { | 83 TEST(GmockTest, AssignArgument) { |
84 // Capture an argument for examination. | 84 // Capture an argument for examination. |
85 MockSampleClass mock; | 85 MockSampleClass mock; |
86 | 86 |
87 EXPECT_CALL(mock, OutputParam(_)) | 87 EXPECT_CALL(mock, OutputParam(_)).WillRepeatedly(SetArgPointee<0>(5)); |
88 .WillRepeatedly(SetArgumentPointee<0>(5)); | |
89 | 88 |
90 int arg = 0; | 89 int arg = 0; |
91 mock.OutputParam(&arg); | 90 mock.OutputParam(&arg); |
92 EXPECT_EQ(5, arg); | 91 EXPECT_EQ(5, arg); |
93 } | 92 } |
94 | 93 |
95 TEST(GmockTest, SideEffects) { | 94 TEST(GmockTest, SideEffects) { |
96 // Capture an argument for examination. | 95 // Capture an argument for examination. |
97 MockSampleClass mock; | 96 MockSampleClass mock; |
98 | 97 |
99 EXPECT_CALL(mock, OutputParam(_)) | 98 EXPECT_CALL(mock, OutputParam(_)).WillRepeatedly(SetArgPointee<0>(5)); |
100 .WillRepeatedly(SetArgumentPointee<0>(5)); | |
101 | 99 |
102 int arg = 0; | 100 int arg = 0; |
103 mock.OutputParam(&arg); | 101 mock.OutputParam(&arg); |
104 EXPECT_EQ(5, arg); | 102 EXPECT_EQ(5, arg); |
105 } | 103 } |
106 | 104 |
107 TEST(GmockTest, CustomAction_ReturnSecond) { | 105 TEST(GmockTest, CustomAction_ReturnSecond) { |
108 // Test a mock of the ReturnSecond behavior using an action that provides an | 106 // Test a mock of the ReturnSecond behavior using an action that provides an |
109 // alternate implementation of the function. Danger here though, this is | 107 // alternate implementation of the function. Danger here though, this is |
110 // starting to add too much behavior of the mock, which means the mock | 108 // starting to add too much behavior of the mock, which means the mock |
(...skipping 17 matching lines...) Expand all Loading... |
128 EXPECT_CALL(mock, ReturnSecond(_, AnyOf(Eq(4), Eq(5)))) | 126 EXPECT_CALL(mock, ReturnSecond(_, AnyOf(Eq(4), Eq(5)))) |
129 .WillRepeatedly(WithArg<1>(ReturnVal())); | 127 .WillRepeatedly(WithArg<1>(ReturnVal())); |
130 EXPECT_EQ(4, mock.ReturnSecond(-1, 4)); | 128 EXPECT_EQ(4, mock.ReturnSecond(-1, 4)); |
131 EXPECT_EQ(5, mock.ReturnSecond(0, 5)); | 129 EXPECT_EQ(5, mock.ReturnSecond(0, 5)); |
132 EXPECT_EQ(4, mock.ReturnSecond(0xdeadbeef, 4)); | 130 EXPECT_EQ(4, mock.ReturnSecond(0xdeadbeef, 4)); |
133 EXPECT_EQ(4, mock.ReturnSecond(112358, 4)); | 131 EXPECT_EQ(4, mock.ReturnSecond(112358, 4)); |
134 EXPECT_EQ(5, mock.ReturnSecond(1337, 5)); | 132 EXPECT_EQ(5, mock.ReturnSecond(1337, 5)); |
135 } | 133 } |
136 | 134 |
137 } // namespace | 135 } // namespace |
OLD | NEW |