OLD | NEW |
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 // This file tests the C API. | 5 // This file tests the C API. |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include "mojo/public/c/system/buffer.h" | 9 #include "mojo/public/c/system/buffer.h" |
10 #include "mojo/public/c/system/data_pipe.h" | 10 #include "mojo/public/c/system/data_pipe.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 // Message pipe: | 56 // Message pipe: |
57 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 57 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
58 MojoWriteMessage(MOJO_HANDLE_INVALID, buffer, 0u, nullptr, 0u, | 58 MojoWriteMessage(MOJO_HANDLE_INVALID, buffer, 0u, nullptr, 0u, |
59 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 59 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
60 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 60 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
61 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 61 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
62 MojoReadMessage(MOJO_HANDLE_INVALID, buffer, &buffer_size, nullptr, | 62 MojoReadMessage(MOJO_HANDLE_INVALID, buffer, &buffer_size, nullptr, |
63 nullptr, MOJO_READ_MESSAGE_FLAG_NONE)); | 63 nullptr, MOJO_READ_MESSAGE_FLAG_NONE)); |
64 | 64 |
65 // Data pipe: | 65 // Data pipe: |
| 66 MojoDataPipeProducerOptions dpp_options = { |
| 67 sizeof(MojoDataPipeProducerOptions), 0u}; |
| 68 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 69 MojoSetDataPipeProducerOptions(MOJO_HANDLE_INVALID, &dpp_options)); |
| 70 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 71 MojoGetDataPipeProducerOptions( |
| 72 MOJO_HANDLE_INVALID, &dpp_options, |
| 73 static_cast<uint32_t>(sizeof(dpp_options)))); |
66 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 74 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
67 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 75 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
68 MojoWriteData(MOJO_HANDLE_INVALID, buffer, &buffer_size, | 76 MojoWriteData(MOJO_HANDLE_INVALID, buffer, &buffer_size, |
69 MOJO_WRITE_DATA_FLAG_NONE)); | 77 MOJO_WRITE_DATA_FLAG_NONE)); |
70 write_pointer = nullptr; | 78 write_pointer = nullptr; |
71 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 79 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
72 MojoBeginWriteData(MOJO_HANDLE_INVALID, &write_pointer, | 80 MojoBeginWriteData(MOJO_HANDLE_INVALID, &write_pointer, |
73 &buffer_size, MOJO_WRITE_DATA_FLAG_NONE)); | 81 &buffer_size, MOJO_WRITE_DATA_FLAG_NONE)); |
74 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 82 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
75 MojoEndWriteData(MOJO_HANDLE_INVALID, 1u)); | 83 MojoEndWriteData(MOJO_HANDLE_INVALID, 1u)); |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 1000, &state)); | 318 MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 1000, &state)); |
311 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); | 319 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); |
312 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); | 320 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); |
313 | 321 |
314 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc)); | 322 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc)); |
315 | 323 |
316 // TODO(vtl): Test the other way around -- closing the consumer should make | 324 // TODO(vtl): Test the other way around -- closing the consumer should make |
317 // the producer never-writable? | 325 // the producer never-writable? |
318 } | 326 } |
319 | 327 |
320 // TODO(vtl): Enable once I've added support for NaCl. | |
321 #ifndef __native_client__ | |
322 TEST(CoreTest, DataPipeWriteThreshold) { | 328 TEST(CoreTest, DataPipeWriteThreshold) { |
323 const MojoCreateDataPipeOptions options = { | 329 const MojoCreateDataPipeOptions options = { |
324 static_cast<uint32_t>( | 330 static_cast<uint32_t>( |
325 sizeof(MojoCreateDataPipeOptions)), // |struct_size|. | 331 sizeof(MojoCreateDataPipeOptions)), // |struct_size|. |
326 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|. | 332 MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|. |
327 2u, // |element_num_bytes|. | 333 2u, // |element_num_bytes|. |
328 4u // |capacity_num_bytes|. | 334 4u // |capacity_num_bytes|. |
329 }; | 335 }; |
330 MojoHandle hp = MOJO_HANDLE_INVALID; | 336 MojoHandle hp = MOJO_HANDLE_INVALID; |
331 MojoHandle hc = MOJO_HANDLE_INVALID; | 337 MojoHandle hc = MOJO_HANDLE_INVALID; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 static const uint16_t kTestElem = 12345u; | 376 static const uint16_t kTestElem = 12345u; |
371 uint32_t num_bytes = 2u; | 377 uint32_t num_bytes = 2u; |
372 EXPECT_EQ(MOJO_RESULT_OK, MojoWriteData(hp, &kTestElem, &num_bytes, | 378 EXPECT_EQ(MOJO_RESULT_OK, MojoWriteData(hp, &kTestElem, &num_bytes, |
373 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 379 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
374 EXPECT_EQ(2u, num_bytes); | 380 EXPECT_EQ(2u, num_bytes); |
375 | 381 |
376 // Should still have the write threshold signal. | 382 // Should still have the write threshold signal. |
377 EXPECT_EQ(MOJO_RESULT_OK, | 383 EXPECT_EQ(MOJO_RESULT_OK, |
378 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, nullptr)); | 384 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, nullptr)); |
379 | 385 |
380 // Do a two-phase write of another element. | 386 // Write another element. |
381 void* write_pointer = nullptr; | 387 static const uint16_t kAnotherTestElem = 12345u; |
382 num_bytes = 0u; | 388 num_bytes = 2u; |
383 EXPECT_EQ(MOJO_RESULT_OK, MojoBeginWriteData(hp, &write_pointer, &num_bytes, | 389 EXPECT_EQ(MOJO_RESULT_OK, MojoWriteData(hp, &kAnotherTestElem, &num_bytes, |
384 MOJO_WRITE_DATA_FLAG_NONE)); | 390 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
385 ASSERT_TRUE(write_pointer); | 391 EXPECT_EQ(2u, num_bytes); |
386 ASSERT_EQ(2u, num_bytes); | |
387 *static_cast<uint16_t*>(write_pointer) = 6789u; | |
388 EXPECT_EQ(MOJO_RESULT_OK, MojoEndWriteData(hp, 2u)); | |
389 | 392 |
390 // Should no longer have the write threshold signal. | 393 // Should no longer have the write threshold signal. |
391 state = MojoHandleSignalsState(); | 394 state = MojoHandleSignalsState(); |
392 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, | 395 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
393 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state)); | 396 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state)); |
394 EXPECT_EQ(0u, state.satisfied_signals); | 397 EXPECT_EQ(0u, state.satisfied_signals); |
395 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | | 398 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | |
396 MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, | 399 MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, |
397 state.satisfiable_signals); | 400 state.satisfiable_signals); |
398 | 401 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 | 446 |
444 // The write threshold signal should now be unsatisfiable. | 447 // The write threshold signal should now be unsatisfiable. |
445 state = MojoHandleSignalsState(); | 448 state = MojoHandleSignalsState(); |
446 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 449 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
447 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state)); | 450 MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state)); |
448 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); | 451 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); |
449 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); | 452 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); |
450 | 453 |
451 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp)); | 454 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp)); |
452 } | 455 } |
453 #endif | |
454 | 456 |
455 TEST(CoreTest, DataPipeReadThreshold) { | 457 TEST(CoreTest, DataPipeReadThreshold) { |
456 MojoHandle hp = MOJO_HANDLE_INVALID; | 458 MojoHandle hp = MOJO_HANDLE_INVALID; |
457 MojoHandle hc = MOJO_HANDLE_INVALID; | 459 MojoHandle hc = MOJO_HANDLE_INVALID; |
458 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(nullptr, &hp, &hc)); | 460 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(nullptr, &hp, &hc)); |
459 EXPECT_NE(hp, MOJO_HANDLE_INVALID); | 461 EXPECT_NE(hp, MOJO_HANDLE_INVALID); |
460 EXPECT_NE(hc, MOJO_HANDLE_INVALID); | 462 EXPECT_NE(hc, MOJO_HANDLE_INVALID); |
461 EXPECT_NE(hc, hp); | 463 EXPECT_NE(hc, hp); |
462 | 464 |
463 MojoDataPipeConsumerOptions copts; | 465 MojoDataPipeConsumerOptions copts; |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 | 643 |
642 TEST(CoreTest, MinimalCppTest) { | 644 TEST(CoreTest, MinimalCppTest) { |
643 const char* failure = MinimalCppTest(); | 645 const char* failure = MinimalCppTest(); |
644 EXPECT_FALSE(failure) << failure; | 646 EXPECT_FALSE(failure) << failure; |
645 } | 647 } |
646 | 648 |
647 // TODO(vtl): Add multi-threaded tests. | 649 // TODO(vtl): Add multi-threaded tests. |
648 | 650 |
649 } // namespace | 651 } // namespace |
650 } // namespace mojo | 652 } // namespace mojo |
OLD | NEW |