Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(255)

Side by Side Diff: mojo/public/tests/bindings/connector_unittest.cc

Issue 134823005: Mojo: re-organize public tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <stdlib.h> 5 #include <stdlib.h>
6 #include <string.h> 6 #include <string.h>
7 7
8 #include "mojo/public/bindings/lib/bindings_support.h" 8 #include "mojo/public/bindings/lib/bindings_support.h"
9 #include "mojo/public/bindings/lib/connector.h" 9 #include "mojo/public/bindings/lib/connector.h"
10 #include "mojo/public/bindings/lib/message_queue.h" 10 #include "mojo/public/bindings/lib/message_queue.h"
11 #include "mojo/public/system/macros.h" 11 #include "mojo/public/system/macros.h"
12 #include "mojo/public/tests/simple_bindings_support.h" 12 #include "mojo/public/tests/bindings/simple_bindings_support.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace mojo { 15 namespace mojo {
16 namespace test { 16 namespace test {
17 17
18 class MessageAccumulator : public MessageReceiver { 18 class MessageAccumulator : public MessageReceiver {
19 public: 19 public:
20 MessageAccumulator() { 20 MessageAccumulator() {
21 } 21 }
22 22
23 virtual bool Accept(Message* message) MOJO_OVERRIDE { 23 virtual bool Accept(Message* message) MOJO_OVERRIDE {
24 queue_.Push(message); 24 queue_.Push(message);
25 return true; 25 return true;
26 } 26 }
27 27
28 bool IsEmpty() const { 28 bool IsEmpty() const {
29 return queue_.IsEmpty(); 29 return queue_.IsEmpty();
30 } 30 }
31 31
32 void Pop(Message* message) { 32 void Pop(Message* message) {
33 queue_.Pop(message); 33 queue_.Pop(message);
34 } 34 }
35 35
36 private: 36 private:
37 MessageQueue queue_; 37 MessageQueue queue_;
38 }; 38 };
39 39
40 class BindingsConnectorTest : public testing::Test { 40 class ConnectorTest : public testing::Test {
41 public: 41 public:
42 BindingsConnectorTest() { 42 ConnectorTest() {
43 } 43 }
44 44
45 virtual void SetUp() MOJO_OVERRIDE { 45 virtual void SetUp() MOJO_OVERRIDE {
46 CreateMessagePipe(&handle0_, &handle1_); 46 CreateMessagePipe(&handle0_, &handle1_);
47 } 47 }
48 48
49 virtual void TearDown() MOJO_OVERRIDE { 49 virtual void TearDown() MOJO_OVERRIDE {
50 } 50 }
51 51
52 void AllocMessage(const char* text, Message* message) { 52 void AllocMessage(const char* text, Message* message) {
(...skipping 10 matching lines...) Expand all
63 } 63 }
64 64
65 protected: 65 protected:
66 ScopedMessagePipeHandle handle0_; 66 ScopedMessagePipeHandle handle0_;
67 ScopedMessagePipeHandle handle1_; 67 ScopedMessagePipeHandle handle1_;
68 68
69 private: 69 private:
70 SimpleBindingsSupport bindings_support_; 70 SimpleBindingsSupport bindings_support_;
71 }; 71 };
72 72
73 TEST_F(BindingsConnectorTest, Basic) { 73 TEST_F(ConnectorTest, Basic) {
74 internal::Connector connector0(handle0_.Pass()); 74 internal::Connector connector0(handle0_.Pass());
75 internal::Connector connector1(handle1_.Pass()); 75 internal::Connector connector1(handle1_.Pass());
76 76
77 const char kText[] = "hello world"; 77 const char kText[] = "hello world";
78 78
79 Message message; 79 Message message;
80 AllocMessage(kText, &message); 80 AllocMessage(kText, &message);
81 81
82 connector0.Accept(&message); 82 connector0.Accept(&message);
83 83
84 MessageAccumulator accumulator; 84 MessageAccumulator accumulator;
85 connector1.SetIncomingReceiver(&accumulator); 85 connector1.SetIncomingReceiver(&accumulator);
86 86
87 PumpMessages(); 87 PumpMessages();
88 88
89 ASSERT_FALSE(accumulator.IsEmpty()); 89 ASSERT_FALSE(accumulator.IsEmpty());
90 90
91 Message message_received; 91 Message message_received;
92 accumulator.Pop(&message_received); 92 accumulator.Pop(&message_received);
93 93
94 EXPECT_EQ(std::string(kText), 94 EXPECT_EQ(std::string(kText),
95 std::string( 95 std::string(
96 reinterpret_cast<char*>(message_received.data->payload))); 96 reinterpret_cast<char*>(message_received.data->payload)));
97 } 97 }
98 98
99 TEST_F(BindingsConnectorTest, Basic_EarlyIncomingReceiver) { 99 TEST_F(ConnectorTest, Basic_EarlyIncomingReceiver) {
100 internal::Connector connector0(handle0_.Pass()); 100 internal::Connector connector0(handle0_.Pass());
101 internal::Connector connector1(handle1_.Pass()); 101 internal::Connector connector1(handle1_.Pass());
102 102
103 MessageAccumulator accumulator; 103 MessageAccumulator accumulator;
104 connector1.SetIncomingReceiver(&accumulator); 104 connector1.SetIncomingReceiver(&accumulator);
105 105
106 const char kText[] = "hello world"; 106 const char kText[] = "hello world";
107 107
108 Message message; 108 Message message;
109 AllocMessage(kText, &message); 109 AllocMessage(kText, &message);
110 110
111 connector0.Accept(&message); 111 connector0.Accept(&message);
112 112
113 PumpMessages(); 113 PumpMessages();
114 114
115 ASSERT_FALSE(accumulator.IsEmpty()); 115 ASSERT_FALSE(accumulator.IsEmpty());
116 116
117 Message message_received; 117 Message message_received;
118 accumulator.Pop(&message_received); 118 accumulator.Pop(&message_received);
119 119
120 EXPECT_EQ(std::string(kText), 120 EXPECT_EQ(std::string(kText),
121 std::string( 121 std::string(
122 reinterpret_cast<char*>(message_received.data->payload))); 122 reinterpret_cast<char*>(message_received.data->payload)));
123 } 123 }
124 124
125 TEST_F(BindingsConnectorTest, Basic_TwoMessages) { 125 TEST_F(ConnectorTest, Basic_TwoMessages) {
126 internal::Connector connector0(handle0_.Pass()); 126 internal::Connector connector0(handle0_.Pass());
127 internal::Connector connector1(handle1_.Pass()); 127 internal::Connector connector1(handle1_.Pass());
128 128
129 const char* kText[] = { "hello", "world" }; 129 const char* kText[] = { "hello", "world" };
130 130
131 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) { 131 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) {
132 Message message; 132 Message message;
133 AllocMessage(kText[i], &message); 133 AllocMessage(kText[i], &message);
134 134
135 connector0.Accept(&message); 135 connector0.Accept(&message);
136 } 136 }
137 137
138 MessageAccumulator accumulator; 138 MessageAccumulator accumulator;
139 connector1.SetIncomingReceiver(&accumulator); 139 connector1.SetIncomingReceiver(&accumulator);
140 140
141 PumpMessages(); 141 PumpMessages();
142 142
143 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) { 143 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) {
144 ASSERT_FALSE(accumulator.IsEmpty()); 144 ASSERT_FALSE(accumulator.IsEmpty());
145 145
146 Message message_received; 146 Message message_received;
147 accumulator.Pop(&message_received); 147 accumulator.Pop(&message_received);
148 148
149 EXPECT_EQ(std::string(kText[i]), 149 EXPECT_EQ(std::string(kText[i]),
150 std::string( 150 std::string(
151 reinterpret_cast<char*>(message_received.data->payload))); 151 reinterpret_cast<char*>(message_received.data->payload)));
152 } 152 }
153 } 153 }
154 154
155 TEST_F(BindingsConnectorTest, WriteToClosedPipe) { 155 TEST_F(ConnectorTest, WriteToClosedPipe) {
156 // Leak this, so the closed handle isn't closed again. 156 // Leak this, so the closed handle isn't closed again.
157 MojoHandle mojo_handle = handle0_.get().value(); 157 MojoHandle mojo_handle = handle0_.get().value();
158 internal::Connector* connector0 = new internal::Connector(handle0_.Pass()); 158 internal::Connector* connector0 = new internal::Connector(handle0_.Pass());
159 159
160 const char kText[] = "hello world"; 160 const char kText[] = "hello world";
161 161
162 Message message; 162 Message message;
163 AllocMessage(kText, &message); 163 AllocMessage(kText, &message);
164 164
165 // Close handle out from under the connection 165 // Close handle out from under the connection
166 MojoClose(mojo_handle); 166 MojoClose(mojo_handle);
167 167
168 bool ok = connector0->Accept(&message); 168 bool ok = connector0->Accept(&message);
169 EXPECT_FALSE(ok); 169 EXPECT_FALSE(ok);
170 170
171 EXPECT_TRUE(connector0->encountered_error()); 171 EXPECT_TRUE(connector0->encountered_error());
172 } 172 }
173 173
174 // Enable this test once MojoWriteMessage supports passing handles. 174 // Enable this test once MojoWriteMessage supports passing handles.
175 TEST_F(BindingsConnectorTest, MessageWithHandles) { 175 TEST_F(ConnectorTest, MessageWithHandles) {
176 internal::Connector connector0(handle0_.Pass()); 176 internal::Connector connector0(handle0_.Pass());
177 internal::Connector connector1(handle1_.Pass()); 177 internal::Connector connector1(handle1_.Pass());
178 178
179 const char kText[] = "hello world"; 179 const char kText[] = "hello world";
180 180
181 Message message; 181 Message message;
182 AllocMessage(kText, &message); 182 AllocMessage(kText, &message);
183 183
184 ScopedMessagePipeHandle handles[2]; 184 ScopedMessagePipeHandle handles[2];
185 CreateMessagePipe(&handles[0], &handles[1]); 185 CreateMessagePipe(&handles[0], &handles[1]);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 225
226 accumulator.Pop(&message_received); 226 accumulator.Pop(&message_received);
227 227
228 EXPECT_EQ(std::string(kText), 228 EXPECT_EQ(std::string(kText),
229 std::string( 229 std::string(
230 reinterpret_cast<char*>(message_received.data->payload))); 230 reinterpret_cast<char*>(message_received.data->payload)));
231 } 231 }
232 232
233 } // namespace test 233 } // namespace test
234 } // namespace mojo 234 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/tests/bindings/buffer_unittest.cc ('k') | mojo/public/tests/bindings/handle_passing_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698