| 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 |