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

Side by Side Diff: mojo/public/tests/system_core_cpp_unittest.cc

Issue 99913002: Remove "ScopedHandleBase<H>::operator H() const" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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
« no previous file with comments | « mojo/public/system/core_cpp.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "mojo/public/system/core_cpp.h" 5 #include "mojo/public/system/core_cpp.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "mojo/public/system/macros.h" 9 #include "mojo/public/system/macros.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 82
83 EXPECT_EQ(kInvalidHandleValue, h.get().value()); 83 EXPECT_EQ(kInvalidHandleValue, h.get().value());
84 84
85 // This should be a no-op. 85 // This should be a no-op.
86 Close(h.Pass()); 86 Close(h.Pass());
87 87
88 // It should still be invalid. 88 // It should still be invalid.
89 EXPECT_EQ(kInvalidHandleValue, h.get().value()); 89 EXPECT_EQ(kInvalidHandleValue, h.get().value());
90 90
91 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 91 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
92 Wait(h, MOJO_WAIT_FLAG_EVERYTHING, 1000000)); 92 Wait(h.get(), MOJO_WAIT_FLAG_EVERYTHING, 1000000));
93 93
94 std::vector<Handle> wh; 94 std::vector<Handle> wh;
95 wh.push_back(h); 95 wh.push_back(h.get());
96 std::vector<MojoWaitFlags> wf; 96 std::vector<MojoWaitFlags> wf;
97 wf.push_back(MOJO_WAIT_FLAG_EVERYTHING); 97 wf.push_back(MOJO_WAIT_FLAG_EVERYTHING);
98 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 98 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
99 WaitMany(wh, wf, MOJO_DEADLINE_INDEFINITE)); 99 WaitMany(wh, wf, MOJO_DEADLINE_INDEFINITE));
100 } 100 }
101 101
102 // |MessagePipeHandle|/|ScopedMessagePipeHandle| functions: 102 // |MessagePipeHandle|/|ScopedMessagePipeHandle| functions:
103 { 103 {
104 MessagePipeHandle h_invalid; 104 MessagePipeHandle h_invalid;
105 EXPECT_FALSE(h_invalid.is_valid()); 105 EXPECT_FALSE(h_invalid.is_valid());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 CreateMessagePipe(&h_0, &h_1); 137 CreateMessagePipe(&h_0, &h_1);
138 EXPECT_TRUE(h_0.get().is_valid()); 138 EXPECT_TRUE(h_0.get().is_valid());
139 EXPECT_TRUE(h_1.get().is_valid()); 139 EXPECT_TRUE(h_1.get().is_valid());
140 EXPECT_NE(h_0.get().value(), h_1.get().value()); 140 EXPECT_NE(h_0.get().value(), h_1.get().value());
141 // Save the handle values, so we can check that things got closed 141 // Save the handle values, so we can check that things got closed
142 // correctly. 142 // correctly.
143 hv_0 = h_0.get().value(); 143 hv_0 = h_0.get().value();
144 MojoHandle hv_1 = h_1.get().value(); 144 MojoHandle hv_1 = h_1.get().value();
145 145
146 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, 146 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
147 Wait(h_0, MOJO_WAIT_FLAG_READABLE, 0)); 147 Wait(h_0.get(), MOJO_WAIT_FLAG_READABLE, 0));
148 std::vector<Handle> wh; 148 std::vector<Handle> wh;
149 wh.push_back(h_0); 149 wh.push_back(h_0.get());
150 wh.push_back(h_1); 150 wh.push_back(h_1.get());
151 std::vector<MojoWaitFlags> wf; 151 std::vector<MojoWaitFlags> wf;
152 wf.push_back(MOJO_WAIT_FLAG_READABLE); 152 wf.push_back(MOJO_WAIT_FLAG_READABLE);
153 wf.push_back(MOJO_WAIT_FLAG_WRITABLE); 153 wf.push_back(MOJO_WAIT_FLAG_WRITABLE);
154 EXPECT_EQ(1, WaitMany(wh, wf, 1000)); 154 EXPECT_EQ(1, WaitMany(wh, wf, 1000));
155 155
156 // Test closing |h_1| explicitly. 156 // Test closing |h_1| explicitly.
157 Close(h_1.Pass()); 157 Close(h_1.Pass());
158 EXPECT_FALSE(h_1.get().is_valid()); 158 EXPECT_FALSE(h_1.get().is_valid());
159 159
160 // Make sure |h_1| is closed. 160 // Make sure |h_1| is closed.
161 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 161 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
162 MojoWait(hv_1, 162 MojoWait(hv_1,
163 MOJO_WAIT_FLAG_EVERYTHING, 163 MOJO_WAIT_FLAG_EVERYTHING,
164 MOJO_DEADLINE_INDEFINITE)); 164 MOJO_DEADLINE_INDEFINITE));
165 165
166 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 166 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
167 Wait(h_0, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 167 Wait(h_0.get(), MOJO_WAIT_FLAG_READABLE,
168 MOJO_DEADLINE_INDEFINITE));
168 } 169 }
169 // |hv_0| should have been closed when |h_0| went out of scope, so this 170 // |hv_0| should have been closed when |h_0| went out of scope, so this
170 // close should fail. 171 // close should fail.
171 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(hv_0)); 172 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(hv_0));
172 173
173 // Actually test writing/reading messages. 174 // Actually test writing/reading messages.
174 { 175 {
175 ScopedMessagePipeHandle h_0; 176 ScopedMessagePipeHandle h_0;
176 ScopedMessagePipeHandle h_1; 177 ScopedMessagePipeHandle h_1;
177 CreateMessagePipe(&h_0, &h_1); 178 CreateMessagePipe(&h_0, &h_1);
178 179
179 const char kHello[] = "hello"; 180 const char kHello[] = "hello";
180 const uint32_t kHelloSize = static_cast<uint32_t>(sizeof(kHello)); 181 const uint32_t kHelloSize = static_cast<uint32_t>(sizeof(kHello));
181 EXPECT_EQ(MOJO_RESULT_OK, 182 EXPECT_EQ(MOJO_RESULT_OK,
182 WriteMessageRaw(h_0, 183 WriteMessageRaw(h_0.get(),
183 kHello, kHelloSize, 184 kHello, kHelloSize,
184 NULL, 0, 185 NULL, 0,
185 MOJO_WRITE_MESSAGE_FLAG_NONE)); 186 MOJO_WRITE_MESSAGE_FLAG_NONE));
186 EXPECT_EQ(MOJO_RESULT_OK, 187 EXPECT_EQ(MOJO_RESULT_OK,
187 Wait(h_1, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 188 Wait(h_1.get(), MOJO_WAIT_FLAG_READABLE,
189 MOJO_DEADLINE_INDEFINITE));
188 char buffer[10] = { 0 }; 190 char buffer[10] = { 0 };
189 uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer)); 191 uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer));
190 EXPECT_EQ(MOJO_RESULT_OK, 192 EXPECT_EQ(MOJO_RESULT_OK,
191 ReadMessageRaw(h_1, 193 ReadMessageRaw(h_1.get(),
192 buffer, &buffer_size, 194 buffer, &buffer_size,
193 NULL, NULL, 195 NULL, NULL,
194 MOJO_READ_MESSAGE_FLAG_NONE)); 196 MOJO_READ_MESSAGE_FLAG_NONE));
195 EXPECT_EQ(kHelloSize, buffer_size); 197 EXPECT_EQ(kHelloSize, buffer_size);
196 EXPECT_STREQ(kHello, buffer); 198 EXPECT_STREQ(kHello, buffer);
197 199
198 // Send a handle over the previously-establish |MessagePipe|. 200 // Send a handle over the previously-establish |MessagePipe|.
199 ScopedMessagePipeHandle h_2; 201 ScopedMessagePipeHandle h_2;
200 ScopedMessagePipeHandle h_3; 202 ScopedMessagePipeHandle h_3;
201 CreateMessagePipe(&h_2, &h_3); 203 CreateMessagePipe(&h_2, &h_3);
202 204
203 // Write a message to |h_2|, before we send |h_3|. 205 // Write a message to |h_2|, before we send |h_3|.
204 const char kWorld[] = "world!"; 206 const char kWorld[] = "world!";
205 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); 207 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld));
206 EXPECT_EQ(MOJO_RESULT_OK, 208 EXPECT_EQ(MOJO_RESULT_OK,
207 WriteMessageRaw(h_2, 209 WriteMessageRaw(h_2.get(),
208 kWorld, kWorldSize, 210 kWorld, kWorldSize,
209 NULL, 0, 211 NULL, 0,
210 MOJO_WRITE_MESSAGE_FLAG_NONE)); 212 MOJO_WRITE_MESSAGE_FLAG_NONE));
211 213
212 // Send |h_3| over |h_1| to |h_0|. 214 // Send |h_3| over |h_1| to |h_0|.
213 MojoHandle handles[5]; 215 MojoHandle handles[5];
214 handles[0] = h_3.release().value(); 216 handles[0] = h_3.release().value();
215 EXPECT_NE(kInvalidHandleValue, handles[0]); 217 EXPECT_NE(kInvalidHandleValue, handles[0]);
216 EXPECT_FALSE(h_3.get().is_valid()); 218 EXPECT_FALSE(h_3.get().is_valid());
217 uint32_t handles_count = 1; 219 uint32_t handles_count = 1;
218 EXPECT_EQ(MOJO_RESULT_OK, 220 EXPECT_EQ(MOJO_RESULT_OK,
219 WriteMessageRaw(h_1, 221 WriteMessageRaw(h_1.get(),
220 kHello, kHelloSize, 222 kHello, kHelloSize,
221 handles, handles_count, 223 handles, handles_count,
222 MOJO_WRITE_MESSAGE_FLAG_NONE)); 224 MOJO_WRITE_MESSAGE_FLAG_NONE));
223 // |handles[0]| should actually be invalid now. 225 // |handles[0]| should actually be invalid now.
224 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(handles[0])); 226 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(handles[0]));
225 227
226 // Read "hello" and the sent handle. 228 // Read "hello" and the sent handle.
227 EXPECT_EQ(MOJO_RESULT_OK, 229 EXPECT_EQ(MOJO_RESULT_OK,
228 Wait(h_0, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 230 Wait(h_0.get(), MOJO_WAIT_FLAG_READABLE,
231 MOJO_DEADLINE_INDEFINITE));
229 memset(buffer, 0, sizeof(buffer)); 232 memset(buffer, 0, sizeof(buffer));
230 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 233 buffer_size = static_cast<uint32_t>(sizeof(buffer));
231 for (size_t i = 0; i < MOJO_ARRAYSIZE(handles); i++) 234 for (size_t i = 0; i < MOJO_ARRAYSIZE(handles); i++)
232 handles[i] = kInvalidHandleValue; 235 handles[i] = kInvalidHandleValue;
233 handles_count = static_cast<uint32_t>(MOJO_ARRAYSIZE(handles)); 236 handles_count = static_cast<uint32_t>(MOJO_ARRAYSIZE(handles));
234 EXPECT_EQ(MOJO_RESULT_OK, 237 EXPECT_EQ(MOJO_RESULT_OK,
235 ReadMessageRaw(h_0, 238 ReadMessageRaw(h_0.get(),
236 buffer, &buffer_size, 239 buffer, &buffer_size,
237 handles, &handles_count, 240 handles, &handles_count,
238 MOJO_READ_MESSAGE_FLAG_NONE)); 241 MOJO_READ_MESSAGE_FLAG_NONE));
239 EXPECT_EQ(kHelloSize, buffer_size); 242 EXPECT_EQ(kHelloSize, buffer_size);
240 EXPECT_STREQ(kHello, buffer); 243 EXPECT_STREQ(kHello, buffer);
241 EXPECT_EQ(1u, handles_count); 244 EXPECT_EQ(1u, handles_count);
242 EXPECT_NE(kInvalidHandleValue, handles[0]); 245 EXPECT_NE(kInvalidHandleValue, handles[0]);
243 246
244 // Read from the sent/received handle. 247 // Read from the sent/received handle.
245 h_3.reset(MessagePipeHandle(handles[0])); 248 h_3.reset(MessagePipeHandle(handles[0]));
246 // Save |handles[0]| to check that it gets properly closed. 249 // Save |handles[0]| to check that it gets properly closed.
247 hv_0 = handles[0]; 250 hv_0 = handles[0];
248 EXPECT_EQ(MOJO_RESULT_OK, 251 EXPECT_EQ(MOJO_RESULT_OK,
249 Wait(h_3, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 252 Wait(h_3.get(), MOJO_WAIT_FLAG_READABLE,
253 MOJO_DEADLINE_INDEFINITE));
250 memset(buffer, 0, sizeof(buffer)); 254 memset(buffer, 0, sizeof(buffer));
251 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 255 buffer_size = static_cast<uint32_t>(sizeof(buffer));
252 for (size_t i = 0; i < MOJO_ARRAYSIZE(handles); i++) 256 for (size_t i = 0; i < MOJO_ARRAYSIZE(handles); i++)
253 handles[i] = kInvalidHandleValue; 257 handles[i] = kInvalidHandleValue;
254 handles_count = static_cast<uint32_t>(MOJO_ARRAYSIZE(handles)); 258 handles_count = static_cast<uint32_t>(MOJO_ARRAYSIZE(handles));
255 EXPECT_EQ(MOJO_RESULT_OK, 259 EXPECT_EQ(MOJO_RESULT_OK,
256 ReadMessageRaw(h_3, 260 ReadMessageRaw(h_3.get(),
257 buffer, &buffer_size, 261 buffer, &buffer_size,
258 handles, &handles_count, 262 handles, &handles_count,
259 MOJO_READ_MESSAGE_FLAG_NONE)); 263 MOJO_READ_MESSAGE_FLAG_NONE));
260 EXPECT_EQ(kWorldSize, buffer_size); 264 EXPECT_EQ(kWorldSize, buffer_size);
261 EXPECT_STREQ(kWorld, buffer); 265 EXPECT_STREQ(kWorld, buffer);
262 EXPECT_EQ(0u, handles_count); 266 EXPECT_EQ(0u, handles_count);
263 } 267 }
264 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(hv_0)); 268 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(hv_0));
265 } 269 }
266 270
(...skipping 11 matching lines...) Expand all
278 282
279 // Send a handle over the previously-establish |MessagePipe|. 283 // Send a handle over the previously-establish |MessagePipe|.
280 ScopedMessagePipeHandle h_2; 284 ScopedMessagePipeHandle h_2;
281 ScopedMessagePipeHandle h_3; 285 ScopedMessagePipeHandle h_3;
282 CreateMessagePipe(&h_2, &h_3); 286 CreateMessagePipe(&h_2, &h_3);
283 287
284 // Write a message to |h_2|, before we send |h_3|. 288 // Write a message to |h_2|, before we send |h_3|.
285 const char kWorld[] = "world!"; 289 const char kWorld[] = "world!";
286 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); 290 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld));
287 EXPECT_EQ(MOJO_RESULT_OK, 291 EXPECT_EQ(MOJO_RESULT_OK,
288 WriteMessageRaw(h_2, 292 WriteMessageRaw(h_2.get(),
289 kWorld, kWorldSize, 293 kWorld, kWorldSize,
290 NULL, 0, 294 NULL, 0,
291 MOJO_WRITE_MESSAGE_FLAG_NONE)); 295 MOJO_WRITE_MESSAGE_FLAG_NONE));
292 // And also a message to |h_3|. 296 // And also a message to |h_3|.
293 EXPECT_EQ(MOJO_RESULT_OK, 297 EXPECT_EQ(MOJO_RESULT_OK,
294 WriteMessageRaw(h_3, 298 WriteMessageRaw(h_3.get(),
295 kWorld, kWorldSize, 299 kWorld, kWorldSize,
296 NULL, 0, 300 NULL, 0,
297 MOJO_WRITE_MESSAGE_FLAG_NONE)); 301 MOJO_WRITE_MESSAGE_FLAG_NONE));
298 302
299 // Send |h_3| over |h_1| to |h_0|. 303 // Send |h_3| over |h_1| to |h_0|.
300 const char kHello[] = "hello"; 304 const char kHello[] = "hello";
301 const uint32_t kHelloSize = static_cast<uint32_t>(sizeof(kHello)); 305 const uint32_t kHelloSize = static_cast<uint32_t>(sizeof(kHello));
302 MojoHandle h_3_value; 306 MojoHandle h_3_value;
303 h_3_value = h_3.release().value(); 307 h_3_value = h_3.release().value();
304 EXPECT_NE(kInvalidHandleValue, h_3_value); 308 EXPECT_NE(kInvalidHandleValue, h_3_value);
305 EXPECT_FALSE(h_3.get().is_valid()); 309 EXPECT_FALSE(h_3.get().is_valid());
306 EXPECT_EQ(MOJO_RESULT_OK, 310 EXPECT_EQ(MOJO_RESULT_OK,
307 WriteMessageRaw(h_1, 311 WriteMessageRaw(h_1.get(),
308 kHello, kHelloSize, 312 kHello, kHelloSize,
309 &h_3_value, 1, 313 &h_3_value, 1,
310 MOJO_WRITE_MESSAGE_FLAG_NONE)); 314 MOJO_WRITE_MESSAGE_FLAG_NONE));
311 // |h_3_value| should actually be invalid now. 315 // |h_3_value| should actually be invalid now.
312 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(h_3_value)); 316 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(h_3_value));
313 317
314 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_0.release().value())); 318 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_0.release().value()));
315 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_1.release().value())); 319 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_1.release().value()));
316 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_2.release().value())); 320 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_2.release().value()));
317 } 321 }
318 322
319 // Do this in a different order: make the enqueued |MessagePipe| handle only 323 // Do this in a different order: make the enqueued |MessagePipe| handle only
320 // half-alive. 324 // half-alive.
321 { 325 {
322 ScopedMessagePipeHandle h_0; 326 ScopedMessagePipeHandle h_0;
323 ScopedMessagePipeHandle h_1; 327 ScopedMessagePipeHandle h_1;
324 CreateMessagePipe(&h_0, &h_1); 328 CreateMessagePipe(&h_0, &h_1);
325 329
326 // Send a handle over the previously-establish |MessagePipe|. 330 // Send a handle over the previously-establish |MessagePipe|.
327 ScopedMessagePipeHandle h_2; 331 ScopedMessagePipeHandle h_2;
328 ScopedMessagePipeHandle h_3; 332 ScopedMessagePipeHandle h_3;
329 CreateMessagePipe(&h_2, &h_3); 333 CreateMessagePipe(&h_2, &h_3);
330 334
331 // Write a message to |h_2|, before we send |h_3|. 335 // Write a message to |h_2|, before we send |h_3|.
332 const char kWorld[] = "world!"; 336 const char kWorld[] = "world!";
333 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); 337 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld));
334 EXPECT_EQ(MOJO_RESULT_OK, 338 EXPECT_EQ(MOJO_RESULT_OK,
335 WriteMessageRaw(h_2, 339 WriteMessageRaw(h_2.get(),
336 kWorld, kWorldSize, 340 kWorld, kWorldSize,
337 NULL, 0, 341 NULL, 0,
338 MOJO_WRITE_MESSAGE_FLAG_NONE)); 342 MOJO_WRITE_MESSAGE_FLAG_NONE));
339 // And also a message to |h_3|. 343 // And also a message to |h_3|.
340 EXPECT_EQ(MOJO_RESULT_OK, 344 EXPECT_EQ(MOJO_RESULT_OK,
341 WriteMessageRaw(h_3, 345 WriteMessageRaw(h_3.get(),
342 kWorld, kWorldSize, 346 kWorld, kWorldSize,
343 NULL, 0, 347 NULL, 0,
344 MOJO_WRITE_MESSAGE_FLAG_NONE)); 348 MOJO_WRITE_MESSAGE_FLAG_NONE));
345 349
346 // Send |h_3| over |h_1| to |h_0|. 350 // Send |h_3| over |h_1| to |h_0|.
347 const char kHello[] = "hello"; 351 const char kHello[] = "hello";
348 const uint32_t kHelloSize = static_cast<uint32_t>(sizeof(kHello)); 352 const uint32_t kHelloSize = static_cast<uint32_t>(sizeof(kHello));
349 MojoHandle h_3_value; 353 MojoHandle h_3_value;
350 h_3_value = h_3.release().value(); 354 h_3_value = h_3.release().value();
351 EXPECT_NE(kInvalidHandleValue, h_3_value); 355 EXPECT_NE(kInvalidHandleValue, h_3_value);
352 EXPECT_FALSE(h_3.get().is_valid()); 356 EXPECT_FALSE(h_3.get().is_valid());
353 EXPECT_EQ(MOJO_RESULT_OK, 357 EXPECT_EQ(MOJO_RESULT_OK,
354 WriteMessageRaw(h_1, 358 WriteMessageRaw(h_1.get(),
355 kHello, kHelloSize, 359 kHello, kHelloSize,
356 &h_3_value, 1, 360 &h_3_value, 1,
357 MOJO_WRITE_MESSAGE_FLAG_NONE)); 361 MOJO_WRITE_MESSAGE_FLAG_NONE));
358 // |h_3_value| should actually be invalid now. 362 // |h_3_value| should actually be invalid now.
359 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(h_3_value)); 363 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(h_3_value));
360 364
361 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_2.release().value())); 365 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_2.release().value()));
362 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_0.release().value())); 366 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_0.release().value()));
363 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_1.release().value())); 367 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_1.release().value()));
364 } 368 }
365 } 369 }
366 370
367 } // namespace 371 } // namespace
368 } // namespace mojo 372 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/system/core_cpp.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698