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

Unified Diff: mojo/public/c/tests/system/data_pipe_unittest.cc

Issue 2250183003: Make the fuchsia mojo/public repo the source of truth. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/public/c/tests/system/buffer_unittest.cc ('k') | mojo/public/c/tests/system/handle_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/c/tests/system/data_pipe_unittest.cc
diff --git a/mojo/public/c/tests/system/data_pipe_unittest.cc b/mojo/public/c/tests/system/data_pipe_unittest.cc
deleted file mode 100644
index 409c61fda368255b9b24b113f41e26ab0209de73..0000000000000000000000000000000000000000
--- a/mojo/public/c/tests/system/data_pipe_unittest.cc
+++ /dev/null
@@ -1,444 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file tests the C data pipe API (the functions declared in
-// mojo/public/c/include/mojo/system/data_pipe.h).
-
-#include <mojo/system/data_pipe.h>
-
-#include <mojo/result.h>
-#include <mojo/system/handle.h>
-#include <mojo/system/wait.h>
-#include <string.h>
-
-#include "gtest/gtest.h"
-
-namespace {
-
-const MojoHandleRights kDefaultDataPipeProducerHandleRights =
- MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_WRITE |
- MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS;
-const MojoHandleRights kDefaultDataPipeConsumerHandleRights =
- MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ |
- MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS;
-
-TEST(DataPipeTest, InvalidHandle) {
- MojoDataPipeProducerOptions dpp_options = {
- sizeof(MojoDataPipeProducerOptions), 0u};
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoSetDataPipeProducerOptions(MOJO_HANDLE_INVALID, &dpp_options));
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoGetDataPipeProducerOptions(
- MOJO_HANDLE_INVALID, &dpp_options,
- static_cast<uint32_t>(sizeof(dpp_options))));
- char buffer[10] = {};
- uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer));
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoWriteData(MOJO_HANDLE_INVALID, buffer, &buffer_size,
- MOJO_WRITE_DATA_FLAG_NONE));
- void* write_pointer = nullptr;
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoBeginWriteData(MOJO_HANDLE_INVALID, &write_pointer,
- &buffer_size, MOJO_WRITE_DATA_FLAG_NONE));
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoEndWriteData(MOJO_HANDLE_INVALID, 1u));
- buffer_size = static_cast<uint32_t>(sizeof(buffer));
- MojoDataPipeConsumerOptions dpc_options = {
- sizeof(MojoDataPipeConsumerOptions), 0u};
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoSetDataPipeConsumerOptions(MOJO_HANDLE_INVALID, &dpc_options));
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoGetDataPipeConsumerOptions(
- MOJO_HANDLE_INVALID, &dpc_options,
- static_cast<uint32_t>(sizeof(dpc_options))));
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoReadData(MOJO_HANDLE_INVALID, buffer, &buffer_size,
- MOJO_READ_DATA_FLAG_NONE));
- const void* read_pointer = nullptr;
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoBeginReadData(MOJO_HANDLE_INVALID, &read_pointer, &buffer_size,
- MOJO_READ_DATA_FLAG_NONE));
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoEndReadData(MOJO_HANDLE_INVALID, 1u));
-}
-
-TEST(DataPipeTest, Basic) {
- MojoHandle hp = MOJO_HANDLE_INVALID;
- MojoHandle hc = MOJO_HANDLE_INVALID;
- EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(nullptr, &hp, &hc));
- EXPECT_NE(hp, MOJO_HANDLE_INVALID);
- EXPECT_NE(hc, MOJO_HANDLE_INVALID);
- EXPECT_NE(hp, hc);
-
- // Both handles should have the correct rights.
- MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE;
- EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(hp, &rights));
- EXPECT_EQ(kDefaultDataPipeProducerHandleRights, rights);
- rights = MOJO_HANDLE_RIGHT_NONE;
- EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(hc, &rights));
- EXPECT_EQ(kDefaultDataPipeConsumerHandleRights, rights);
-
- // Shouldn't be able to duplicate either handle (just test "with reduced
- // rights" on one, and without on the other).
- MojoHandle handle_denied = MOJO_HANDLE_INVALID;
- EXPECT_EQ(MOJO_RESULT_PERMISSION_DENIED,
- MojoDuplicateHandleWithReducedRights(
- hp, MOJO_HANDLE_RIGHT_DUPLICATE, &handle_denied));
- EXPECT_EQ(MOJO_HANDLE_INVALID, handle_denied);
- handle_denied = MOJO_HANDLE_INVALID;
- EXPECT_EQ(MOJO_RESULT_PERMISSION_DENIED,
- MojoDuplicateHandle(hc, &handle_denied));
- EXPECT_EQ(MOJO_HANDLE_INVALID, handle_denied);
-
- // The consumer |hc| shouldn't be readable.
- MojoHandleSignalsState state;
- EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0, &state));
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_NONE, state.satisfied_signals);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
- MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
- state.satisfiable_signals);
-
- // The producer |hp| should be writable.
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITABLE, 0, &state));
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD,
- state.satisfied_signals);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
- MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD,
- state.satisfiable_signals);
-
- // Try to read from |hc|.
- char buffer[20] = {};
- uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer));
- EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
- MojoReadData(hc, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE));
-
- // Try to begin a two-phase read from |hc|.
- const void* read_pointer = nullptr;
- EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
- MojoBeginReadData(hc, &read_pointer, &buffer_size,
- MOJO_READ_DATA_FLAG_NONE));
-
- // Write to |hp|.
- static const char kHello[] = "hello ";
- static const uint32_t kHelloLen = static_cast<uint32_t>(strlen(kHello));
- // Don't include terminating null.
- buffer_size = kHelloLen;
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWriteData(hp, kHello, &buffer_size, MOJO_WRITE_DATA_FLAG_NONE));
- EXPECT_EQ(kHelloLen, buffer_size);
-
- // |hc| should be(come) readable.
- MojoHandleSignals sig = MOJO_HANDLE_SIGNAL_READABLE;
- uint32_t result_index = 1;
- MojoHandleSignalsState states[1] = {};
- EXPECT_EQ(MOJO_RESULT_OK, MojoWaitMany(&hc, &sig, 1, MOJO_DEADLINE_INDEFINITE,
- &result_index, states));
- EXPECT_EQ(0u, result_index);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
- states[0].satisfied_signals);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
- MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
- states[0].satisfiable_signals);
-
- // Do a two-phase write to |hp|.
- void* write_pointer = nullptr;
- ASSERT_EQ(MOJO_RESULT_OK, MojoBeginWriteData(hp, &write_pointer, &buffer_size,
- MOJO_WRITE_DATA_FLAG_NONE));
- static const char kWorld[] = "world";
- ASSERT_GE(buffer_size, sizeof(kWorld));
- // Include the terminating null.
- memcpy(write_pointer, kWorld, sizeof(kWorld));
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoEndWriteData(hp, static_cast<uint32_t>(sizeof(kWorld))));
-
- // Read one character from |hc|.
- memset(buffer, 0, sizeof(buffer));
- buffer_size = 1;
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoReadData(hc, buffer, &buffer_size, MOJO_READ_DATA_FLAG_NONE));
- ASSERT_EQ(1u, buffer_size);
- EXPECT_EQ('h', buffer[0]);
-
- // Close |hp|.
- EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp));
-
- // |hc| should still be readable.
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 0, &state));
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
- MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
- state.satisfied_signals);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
- MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
- state.satisfiable_signals);
-
- // Do a two-phase read from |hc|.
- read_pointer = nullptr;
- ASSERT_EQ(MOJO_RESULT_OK, MojoBeginReadData(hc, &read_pointer, &buffer_size,
- MOJO_READ_DATA_FLAG_NONE));
- ASSERT_LE(buffer_size, sizeof(buffer) - 1);
- memcpy(&buffer[1], read_pointer, buffer_size);
- EXPECT_EQ(MOJO_RESULT_OK, MojoEndReadData(hc, buffer_size));
- EXPECT_STREQ("hello world", buffer);
-
- // |hc| should no longer be readable.
- EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READABLE, 1000, &state));
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals);
-
- EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc));
-
- // TODO(vtl): Test the other way around -- closing the consumer should make
- // the producer never-writable?
-}
-
-TEST(DataPipeTest, WriteThreshold) {
- const MojoCreateDataPipeOptions options = {
- static_cast<uint32_t>(
- sizeof(MojoCreateDataPipeOptions)), // |struct_size|.
- MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
- 2u, // |element_num_bytes|.
- 4u // |capacity_num_bytes|.
- };
- MojoHandle hp = MOJO_HANDLE_INVALID;
- MojoHandle hc = MOJO_HANDLE_INVALID;
- EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(&options, &hp, &hc));
- EXPECT_NE(hp, MOJO_HANDLE_INVALID);
- EXPECT_NE(hc, MOJO_HANDLE_INVALID);
- EXPECT_NE(hc, hp);
-
- MojoDataPipeProducerOptions popts;
- static const uint32_t kPoptsSize = static_cast<uint32_t>(sizeof(popts));
-
- // Check the current write threshold; should be the default.
- memset(&popts, 255, kPoptsSize);
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoGetDataPipeProducerOptions(hp, &popts, kPoptsSize));
- EXPECT_EQ(kPoptsSize, popts.struct_size);
- EXPECT_EQ(0u, popts.write_threshold_num_bytes);
-
- // Should already have the write threshold signal.
- MojoHandleSignalsState state = {};
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state));
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD,
- state.satisfied_signals);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
- MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD,
- state.satisfiable_signals);
-
- // Try setting the write threshold to something invalid.
- popts.struct_size = kPoptsSize;
- popts.write_threshold_num_bytes = 1u;
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- MojoSetDataPipeProducerOptions(hp, &popts));
- // It shouldn't change the options.
- memset(&popts, 255, kPoptsSize);
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoGetDataPipeProducerOptions(hp, &popts, kPoptsSize));
- EXPECT_EQ(kPoptsSize, popts.struct_size);
- EXPECT_EQ(0u, popts.write_threshold_num_bytes);
-
- // Write an element.
- static const uint16_t kTestElem = 12345u;
- uint32_t num_bytes = 2u;
- EXPECT_EQ(MOJO_RESULT_OK, MojoWriteData(hp, &kTestElem, &num_bytes,
- MOJO_WRITE_DATA_FLAG_NONE));
- EXPECT_EQ(2u, num_bytes);
-
- // Should still have the write threshold signal.
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, nullptr));
-
- // Write another element.
- static const uint16_t kAnotherTestElem = 12345u;
- num_bytes = 2u;
- EXPECT_EQ(MOJO_RESULT_OK, MojoWriteData(hp, &kAnotherTestElem, &num_bytes,
- MOJO_WRITE_DATA_FLAG_NONE));
- EXPECT_EQ(2u, num_bytes);
-
- // Should no longer have the write threshold signal.
- state = MojoHandleSignalsState();
- EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
- MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state));
- EXPECT_EQ(0u, state.satisfied_signals);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
- MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD,
- state.satisfiable_signals);
-
- // Set the write threshold to 2 (one element).
- popts.struct_size = kPoptsSize;
- popts.write_threshold_num_bytes = 2u;
- EXPECT_EQ(MOJO_RESULT_OK, MojoSetDataPipeProducerOptions(hp, &popts));
- // It should actually change the options.
- memset(&popts, 255, kPoptsSize);
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoGetDataPipeProducerOptions(hp, &popts, kPoptsSize));
- EXPECT_EQ(kPoptsSize, popts.struct_size);
- EXPECT_EQ(2u, popts.write_threshold_num_bytes);
-
- // Should still not have the write threshold signal.
- EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
- MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, nullptr));
-
- // Read an element.
- uint16_t read_elem = 0u;
- num_bytes = 2u;
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoReadData(hc, &read_elem, &num_bytes, MOJO_READ_DATA_FLAG_NONE));
- EXPECT_EQ(2u, num_bytes);
- EXPECT_EQ(kTestElem, read_elem);
-
- // Should get the write threshold signal now.
- state = MojoHandleSignalsState();
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 1000, &state));
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD,
- state.satisfied_signals);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
- MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD,
- state.satisfiable_signals);
-
- // Set the write threshold to 4 (two elements).
- popts.struct_size = kPoptsSize;
- popts.write_threshold_num_bytes = 4u;
- EXPECT_EQ(MOJO_RESULT_OK, MojoSetDataPipeProducerOptions(hp, &popts));
-
- // Should again not have the write threshold signal.
- EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
- MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, nullptr));
-
- // Close the consumer.
- EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc));
-
- // The write threshold signal should now be unsatisfiable.
- state = MojoHandleSignalsState();
- EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
- MojoWait(hp, MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, 0, &state));
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals);
-
- EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp));
-}
-
-TEST(DataPipeTest, ReadThreshold) {
- MojoHandle hp = MOJO_HANDLE_INVALID;
- MojoHandle hc = MOJO_HANDLE_INVALID;
- EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(nullptr, &hp, &hc));
- EXPECT_NE(hp, MOJO_HANDLE_INVALID);
- EXPECT_NE(hc, MOJO_HANDLE_INVALID);
- EXPECT_NE(hc, hp);
-
- MojoDataPipeConsumerOptions copts;
- static const uint32_t kCoptsSize = static_cast<uint32_t>(sizeof(copts));
-
- // Check the current read threshold; should be the default.
- memset(&copts, 255, kCoptsSize);
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoGetDataPipeConsumerOptions(hc, &copts, kCoptsSize));
- EXPECT_EQ(kCoptsSize, copts.struct_size);
- EXPECT_EQ(0u, copts.read_threshold_num_bytes);
-
- // Shouldn't have the read threshold signal yet.
- EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 1000, nullptr));
-
- // Write a byte to |hp|.
- static const char kAByte = 'A';
- uint32_t num_bytes = 1u;
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWriteData(hp, &kAByte, &num_bytes, MOJO_WRITE_DATA_FLAG_NONE));
- EXPECT_EQ(1u, num_bytes);
-
- // Now should have the read threshold signal.
- MojoHandleSignalsState state;
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 1000, &state));
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
- state.satisfied_signals);
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED |
- MOJO_HANDLE_SIGNAL_READ_THRESHOLD,
- state.satisfiable_signals);
-
- // Set the read threshold to 3, and then check it.
- copts.struct_size = kCoptsSize;
- copts.read_threshold_num_bytes = 3u;
- EXPECT_EQ(MOJO_RESULT_OK, MojoSetDataPipeConsumerOptions(hc, &copts));
-
- memset(&copts, 255, kCoptsSize);
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoGetDataPipeConsumerOptions(hc, &copts, kCoptsSize));
- EXPECT_EQ(kCoptsSize, copts.struct_size);
- EXPECT_EQ(3u, copts.read_threshold_num_bytes);
-
- // Shouldn't have the read threshold signal again.
- EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 0, nullptr));
-
- // Write another byte to |hp|.
- static const char kBByte = 'B';
- num_bytes = 1u;
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWriteData(hp, &kBByte, &num_bytes, MOJO_WRITE_DATA_FLAG_NONE));
- EXPECT_EQ(1u, num_bytes);
-
- // Still shouldn't have the read threshold signal.
- EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 1000, nullptr));
-
- // Write a third byte to |hp|.
- static const char kCByte = 'C';
- num_bytes = 1u;
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWriteData(hp, &kCByte, &num_bytes, MOJO_WRITE_DATA_FLAG_NONE));
- EXPECT_EQ(1u, num_bytes);
-
- // Now should have the read threshold signal.
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 1000, nullptr));
-
- // Read a byte.
- char read_byte = 'x';
- num_bytes = 1u;
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoReadData(hc, &read_byte, &num_bytes, MOJO_READ_DATA_FLAG_NONE));
- EXPECT_EQ(1u, num_bytes);
- EXPECT_EQ(kAByte, read_byte);
-
- // Shouldn't have the read threshold signal again.
- EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 0, nullptr));
-
- // Set the read threshold to 2.
- copts.struct_size = kCoptsSize;
- copts.read_threshold_num_bytes = 2u;
- EXPECT_EQ(MOJO_RESULT_OK, MojoSetDataPipeConsumerOptions(hc, &copts));
-
- // Should have the read threshold signal again.
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 0, nullptr));
-
- // Set the read threshold to the default by passing null, and check it.
- EXPECT_EQ(MOJO_RESULT_OK, MojoSetDataPipeConsumerOptions(hc, nullptr));
-
- memset(&copts, 255, kCoptsSize);
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoGetDataPipeConsumerOptions(hc, &copts, kCoptsSize));
- EXPECT_EQ(kCoptsSize, copts.struct_size);
- EXPECT_EQ(0u, copts.read_threshold_num_bytes);
-
- // Should still have the read threshold signal.
- EXPECT_EQ(MOJO_RESULT_OK,
- MojoWait(hc, MOJO_HANDLE_SIGNAL_READ_THRESHOLD, 0, nullptr));
-
- EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hp));
- EXPECT_EQ(MOJO_RESULT_OK, MojoClose(hc));
-}
-
-// TODO(vtl): Add multi-threaded tests.
-
-} // namespace
« no previous file with comments | « mojo/public/c/tests/system/buffer_unittest.cc ('k') | mojo/public/c/tests/system/handle_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698