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

Side by Side Diff: mojo/edk/system/remote_data_pipe_impl_unittest.cc

Issue 2075353002: Plumb the handle signals state out of Waiter::Wait(). (Closed) Base URL: https://github.com/domokit/mojo.git@work795_wait_set_4.3-x-work794_wait_set_4.2
Patch Set: Created 4 years, 6 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 file tests both |RemoteProducerDataPipeImpl| and 5 // This file tests both |RemoteProducerDataPipeImpl| and
6 // |RemoteConsumerDataPipeImpl|. 6 // |RemoteConsumerDataPipeImpl|.
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 // Write on MP 0 (port 0). Wait and receive on MP 1 (port 0). (Add the waiter 140 // Write on MP 0 (port 0). Wait and receive on MP 1 (port 0). (Add the waiter
141 // first, to avoid any handling the case where it's already readable.) 141 // first, to avoid any handling the case where it's already readable.)
142 waiter.Init(); 142 waiter.Init();
143 ASSERT_EQ(MOJO_RESULT_OK, 143 ASSERT_EQ(MOJO_RESULT_OK,
144 message_pipe(1)->AddAwakable( 144 message_pipe(1)->AddAwakable(
145 0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, 123, nullptr)); 145 0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, 123, nullptr));
146 EXPECT_EQ(MOJO_RESULT_OK, 146 EXPECT_EQ(MOJO_RESULT_OK,
147 message_pipe(0)->WriteMessage(0, UserPointer<const void>(kHello), 147 message_pipe(0)->WriteMessage(0, UserPointer<const void>(kHello),
148 sizeof(kHello), nullptr, 148 sizeof(kHello), nullptr,
149 MOJO_WRITE_MESSAGE_FLAG_NONE)); 149 MOJO_WRITE_MESSAGE_FLAG_NONE));
150 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(test::ActionTimeout(), &context)); 150 EXPECT_EQ(MOJO_RESULT_OK,
151 waiter.Wait(test::ActionTimeout(), &context, nullptr));
151 EXPECT_EQ(123u, context); 152 EXPECT_EQ(123u, context);
152 hss = HandleSignalsState(); 153 hss = HandleSignalsState();
153 message_pipe(1)->RemoveAwakable(0, &waiter, &hss); 154 message_pipe(1)->RemoveAwakable(0, &waiter, &hss);
154 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 155 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
155 hss.satisfied_signals); 156 hss.satisfied_signals);
156 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 157 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
157 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 158 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
158 hss.satisfiable_signals); 159 hss.satisfiable_signals);
159 EXPECT_EQ(MOJO_RESULT_OK, message_pipe(1)->ReadMessage( 160 EXPECT_EQ(MOJO_RESULT_OK, message_pipe(1)->ReadMessage(
160 0, UserPointer<void>(read_buffer), 161 0, UserPointer<void>(read_buffer),
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 EXPECT_EQ(MOJO_RESULT_OK, message_pipe(0)->WriteMessage( 206 EXPECT_EQ(MOJO_RESULT_OK, message_pipe(0)->WriteMessage(
206 0, NullUserPointer(), 0, &transports, 207 0, NullUserPointer(), 0, &transports,
207 MOJO_WRITE_MESSAGE_FLAG_NONE)); 208 MOJO_WRITE_MESSAGE_FLAG_NONE));
208 transport.End(); 209 transport.End();
209 210
210 // |consumer_handle.dispatcher| should have been closed. This is 211 // |consumer_handle.dispatcher| should have been closed. This is
211 // |DCHECK()|ed when it is destroyed. 212 // |DCHECK()|ed when it is destroyed.
212 EXPECT_TRUE(consumer_handle.dispatcher->HasOneRef()); 213 EXPECT_TRUE(consumer_handle.dispatcher->HasOneRef());
213 consumer_handle.reset(); 214 consumer_handle.reset();
214 } 215 }
215 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(test::ActionTimeout(), &context)); 216 EXPECT_EQ(MOJO_RESULT_OK,
217 waiter.Wait(test::ActionTimeout(), &context, nullptr));
216 EXPECT_EQ(123u, context); 218 EXPECT_EQ(123u, context);
217 hss = HandleSignalsState(); 219 hss = HandleSignalsState();
218 message_pipe(1)->RemoveAwakable(0, &waiter, &hss); 220 message_pipe(1)->RemoveAwakable(0, &waiter, &hss);
219 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 221 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
220 hss.satisfied_signals); 222 hss.satisfied_signals);
221 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 223 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
222 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 224 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
223 hss.satisfiable_signals); 225 hss.satisfiable_signals);
224 EXPECT_EQ(MOJO_RESULT_OK, 226 EXPECT_EQ(MOJO_RESULT_OK,
225 message_pipe(1)->ReadMessage(0, UserPointer<void>(read_buffer), 227 message_pipe(1)->ReadMessage(0, UserPointer<void>(read_buffer),
(...skipping 14 matching lines...) Expand all
240 static_cast<DataPipeConsumerDispatcher*>( 242 static_cast<DataPipeConsumerDispatcher*>(
241 read_handles[0].dispatcher.get())); 243 read_handles[0].dispatcher.get()));
242 read_handles.clear(); 244 read_handles.clear();
243 245
244 waiter.Init(); 246 waiter.Init();
245 hss = HandleSignalsState(); 247 hss = HandleSignalsState();
246 MojoResult result = 248 MojoResult result =
247 consumer->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 456, &hss); 249 consumer->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 456, &hss);
248 if (result == MOJO_RESULT_OK) { 250 if (result == MOJO_RESULT_OK) {
249 context = 0; 251 context = 0;
250 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(test::ActionTimeout(), &context)); 252 EXPECT_EQ(MOJO_RESULT_OK,
253 waiter.Wait(test::ActionTimeout(), &context, nullptr));
251 EXPECT_EQ(456u, context); 254 EXPECT_EQ(456u, context);
252 consumer->RemoveAwakable(&waiter, &hss); 255 consumer->RemoveAwakable(&waiter, &hss);
253 } else { 256 } else {
254 ASSERT_EQ(MOJO_RESULT_ALREADY_EXISTS, result); 257 ASSERT_EQ(MOJO_RESULT_ALREADY_EXISTS, result);
255 } 258 }
256 // We don't know if the fact that the producer has been closed is known yet. 259 // We don't know if the fact that the producer has been closed is known yet.
257 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)); 260 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE));
258 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READ_THRESHOLD)); 261 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READ_THRESHOLD));
259 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE)); 262 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE));
260 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READ_THRESHOLD)); 263 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READ_THRESHOLD));
261 264
262 // Read one element. 265 // Read one element.
263 elements[0] = -1; 266 elements[0] = -1;
264 elements[1] = -1; 267 elements[1] = -1;
265 num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0])); 268 num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
266 EXPECT_EQ(MOJO_RESULT_OK, consumer->ReadData(UserPointer<void>(elements), 269 EXPECT_EQ(MOJO_RESULT_OK, consumer->ReadData(UserPointer<void>(elements),
267 MakeUserPointer(&num_bytes), 270 MakeUserPointer(&num_bytes),
268 MOJO_READ_DATA_FLAG_NONE)); 271 MOJO_READ_DATA_FLAG_NONE));
269 EXPECT_EQ(1u * sizeof(elements[0]), num_bytes); 272 EXPECT_EQ(1u * sizeof(elements[0]), num_bytes);
270 EXPECT_EQ(123, elements[0]); 273 EXPECT_EQ(123, elements[0]);
271 EXPECT_EQ(-1, elements[1]); 274 EXPECT_EQ(-1, elements[1]);
272 275
273 waiter.Init(); 276 waiter.Init();
274 hss = HandleSignalsState(); 277 hss = HandleSignalsState();
275 result = 278 result =
276 consumer->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 789, &hss); 279 consumer->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 789, &hss);
277 if (result == MOJO_RESULT_OK) { 280 if (result == MOJO_RESULT_OK) {
278 context = 0; 281 context = 0;
279 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 282 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
280 waiter.Wait(test::ActionTimeout(), &context)); 283 waiter.Wait(test::ActionTimeout(), &context, nullptr));
281 EXPECT_EQ(789u, context); 284 EXPECT_EQ(789u, context);
282 consumer->RemoveAwakable(&waiter, &hss); 285 consumer->RemoveAwakable(&waiter, &hss);
283 } else { 286 } else {
284 ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, result); 287 ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, result);
285 } 288 }
286 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); 289 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals);
287 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); 290 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals);
288 291
289 consumer->Close(); 292 consumer->Close();
290 } 293 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 EXPECT_EQ(MOJO_RESULT_OK, message_pipe(0)->WriteMessage( 331 EXPECT_EQ(MOJO_RESULT_OK, message_pipe(0)->WriteMessage(
329 0, NullUserPointer(), 0, &transports, 332 0, NullUserPointer(), 0, &transports,
330 MOJO_WRITE_MESSAGE_FLAG_NONE)); 333 MOJO_WRITE_MESSAGE_FLAG_NONE));
331 transport.End(); 334 transport.End();
332 335
333 // |consumer_handle.dispatcher| should have been closed. This is 336 // |consumer_handle.dispatcher| should have been closed. This is
334 // |DCHECK()|ed when it is destroyed. 337 // |DCHECK()|ed when it is destroyed.
335 EXPECT_TRUE(consumer_handle.dispatcher->HasOneRef()); 338 EXPECT_TRUE(consumer_handle.dispatcher->HasOneRef());
336 consumer_handle.reset(); 339 consumer_handle.reset();
337 } 340 }
338 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(test::ActionTimeout(), &context)); 341 EXPECT_EQ(MOJO_RESULT_OK,
342 waiter.Wait(test::ActionTimeout(), &context, nullptr));
339 EXPECT_EQ(123u, context); 343 EXPECT_EQ(123u, context);
340 hss = HandleSignalsState(); 344 hss = HandleSignalsState();
341 message_pipe(1)->RemoveAwakable(0, &waiter, &hss); 345 message_pipe(1)->RemoveAwakable(0, &waiter, &hss);
342 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 346 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
343 hss.satisfied_signals); 347 hss.satisfied_signals);
344 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 348 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
345 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 349 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
346 hss.satisfiable_signals); 350 hss.satisfiable_signals);
347 EXPECT_EQ(MOJO_RESULT_OK, 351 EXPECT_EQ(MOJO_RESULT_OK,
348 message_pipe(1)->ReadMessage(0, UserPointer<void>(read_buffer), 352 message_pipe(1)->ReadMessage(0, UserPointer<void>(read_buffer),
(...skipping 22 matching lines...) Expand all
371 static_cast<uint32_t>(1u * sizeof(int32_t)))); 375 static_cast<uint32_t>(1u * sizeof(int32_t))));
372 dp->ProducerClose(); 376 dp->ProducerClose();
373 377
374 // Wait for the consumer to be readable. 378 // Wait for the consumer to be readable.
375 waiter.Init(); 379 waiter.Init();
376 hss = HandleSignalsState(); 380 hss = HandleSignalsState();
377 MojoResult result = 381 MojoResult result =
378 consumer->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 456, &hss); 382 consumer->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 456, &hss);
379 if (result == MOJO_RESULT_OK) { 383 if (result == MOJO_RESULT_OK) {
380 context = 0; 384 context = 0;
381 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(test::ActionTimeout(), &context)); 385 EXPECT_EQ(MOJO_RESULT_OK,
386 waiter.Wait(test::ActionTimeout(), &context, nullptr));
382 EXPECT_EQ(456u, context); 387 EXPECT_EQ(456u, context);
383 consumer->RemoveAwakable(&waiter, &hss); 388 consumer->RemoveAwakable(&waiter, &hss);
384 } else { 389 } else {
385 ASSERT_EQ(MOJO_RESULT_ALREADY_EXISTS, result); 390 ASSERT_EQ(MOJO_RESULT_ALREADY_EXISTS, result);
386 } 391 }
387 // We don't know if the fact that the producer has been closed is known yet. 392 // We don't know if the fact that the producer has been closed is known yet.
388 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)); 393 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE));
389 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READ_THRESHOLD)); 394 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READ_THRESHOLD));
390 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE)); 395 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE));
391 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READ_THRESHOLD)); 396 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READ_THRESHOLD));
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 EXPECT_EQ(MOJO_RESULT_OK, message_pipe(0)->WriteMessage( 460 EXPECT_EQ(MOJO_RESULT_OK, message_pipe(0)->WriteMessage(
456 0, NullUserPointer(), 0, &transports, 461 0, NullUserPointer(), 0, &transports,
457 MOJO_WRITE_MESSAGE_FLAG_NONE)); 462 MOJO_WRITE_MESSAGE_FLAG_NONE));
458 transport.End(); 463 transport.End();
459 464
460 // |consumer_handle.dispatcher| should have been closed. This is 465 // |consumer_handle.dispatcher| should have been closed. This is
461 // |DCHECK()|ed when it is destroyed. 466 // |DCHECK()|ed when it is destroyed.
462 EXPECT_TRUE(consumer_handle.dispatcher->HasOneRef()); 467 EXPECT_TRUE(consumer_handle.dispatcher->HasOneRef());
463 consumer_handle.reset(); 468 consumer_handle.reset();
464 } 469 }
465 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(test::ActionTimeout(), &context)); 470 EXPECT_EQ(MOJO_RESULT_OK,
471 waiter.Wait(test::ActionTimeout(), &context, nullptr));
466 EXPECT_EQ(123u, context); 472 EXPECT_EQ(123u, context);
467 hss = HandleSignalsState(); 473 hss = HandleSignalsState();
468 message_pipe(1)->RemoveAwakable(0, &waiter, &hss); 474 message_pipe(1)->RemoveAwakable(0, &waiter, &hss);
469 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 475 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
470 hss.satisfied_signals); 476 hss.satisfied_signals);
471 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 477 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
472 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 478 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
473 hss.satisfiable_signals); 479 hss.satisfiable_signals);
474 EXPECT_EQ(MOJO_RESULT_OK, 480 EXPECT_EQ(MOJO_RESULT_OK,
475 message_pipe(1)->ReadMessage(0, UserPointer<void>(read_buffer), 481 message_pipe(1)->ReadMessage(0, UserPointer<void>(read_buffer),
(...skipping 22 matching lines...) Expand all
498 static_cast<uint32_t>(1u * sizeof(int32_t)))); 504 static_cast<uint32_t>(1u * sizeof(int32_t))));
499 dp->ProducerClose(); 505 dp->ProducerClose();
500 506
501 // Wait for the consumer to know that the producer is closed. 507 // Wait for the consumer to know that the producer is closed.
502 waiter.Init(); 508 waiter.Init();
503 hss = HandleSignalsState(); 509 hss = HandleSignalsState();
504 MojoResult result = 510 MojoResult result =
505 consumer->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_PEER_CLOSED, 456, &hss); 511 consumer->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_PEER_CLOSED, 456, &hss);
506 if (result == MOJO_RESULT_OK) { 512 if (result == MOJO_RESULT_OK) {
507 context = 0; 513 context = 0;
508 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(test::ActionTimeout(), &context)); 514 EXPECT_EQ(MOJO_RESULT_OK,
515 waiter.Wait(test::ActionTimeout(), &context, nullptr));
509 EXPECT_EQ(456u, context); 516 EXPECT_EQ(456u, context);
510 consumer->RemoveAwakable(&waiter, &hss); 517 consumer->RemoveAwakable(&waiter, &hss);
511 } else { 518 } else {
512 ASSERT_EQ(MOJO_RESULT_ALREADY_EXISTS, result); 519 ASSERT_EQ(MOJO_RESULT_ALREADY_EXISTS, result);
513 } 520 }
514 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | 521 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
515 MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 522 MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
516 hss.satisfied_signals); 523 hss.satisfied_signals);
517 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | 524 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
518 MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 525 MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
519 hss.satisfiable_signals); 526 hss.satisfiable_signals);
520 527
521 // Read some elements. 528 // Read some elements.
522 int32_t elements[10] = {}; 529 int32_t elements[10] = {};
523 num_bytes = static_cast<uint32_t>(sizeof(elements)); 530 num_bytes = static_cast<uint32_t>(sizeof(elements));
524 EXPECT_EQ(MOJO_RESULT_OK, consumer->ReadData(UserPointer<void>(elements), 531 EXPECT_EQ(MOJO_RESULT_OK, consumer->ReadData(UserPointer<void>(elements),
525 MakeUserPointer(&num_bytes), 532 MakeUserPointer(&num_bytes),
526 MOJO_READ_DATA_FLAG_NONE)); 533 MOJO_READ_DATA_FLAG_NONE));
527 EXPECT_EQ(2u * sizeof(elements[0]), num_bytes); 534 EXPECT_EQ(2u * sizeof(elements[0]), num_bytes);
528 EXPECT_EQ(123456, elements[0]); 535 EXPECT_EQ(123456, elements[0]);
529 EXPECT_EQ(789012, elements[1]); 536 EXPECT_EQ(789012, elements[1]);
530 EXPECT_EQ(0, elements[2]); 537 EXPECT_EQ(0, elements[2]);
531 538
532 consumer->Close(); 539 consumer->Close();
533 } 540 }
534 541
535 } // namespace 542 } // namespace
536 } // namespace system 543 } // namespace system
537 } // namespace mojo 544 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698