| Index: mojo/edk/system/data_pipe_unittest.cc
|
| diff --git a/mojo/edk/system/data_pipe_unittest.cc b/mojo/edk/system/data_pipe_unittest.cc
|
| deleted file mode 100644
|
| index ad02222ddb1c19ed33087fd445510abff5ce2190..0000000000000000000000000000000000000000
|
| --- a/mojo/edk/system/data_pipe_unittest.cc
|
| +++ /dev/null
|
| @@ -1,375 +0,0 @@
|
| -// Copyright 2013 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.
|
| -
|
| -#include "mojo/edk/system/data_pipe.h"
|
| -
|
| -#include <stddef.h>
|
| -#include <stdint.h>
|
| -
|
| -#include <limits>
|
| -
|
| -#include "mojo/edk/system/configuration.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace mojo {
|
| -namespace system {
|
| -namespace {
|
| -
|
| -const uint32_t kSizeOfCreateOptions =
|
| - static_cast<uint32_t>(sizeof(MojoCreateDataPipeOptions));
|
| -
|
| -// Does a cursory sanity check of |validated_options|. Calls
|
| -// |ValidateCreateOptions()| on already-validated options. The validated options
|
| -// should be valid, and the revalidated copy should be the same.
|
| -void RevalidateCreateOptions(
|
| - const MojoCreateDataPipeOptions& validated_options) {
|
| - EXPECT_EQ(kSizeOfCreateOptions, validated_options.struct_size);
|
| - // Nothing to check for flags.
|
| - EXPECT_GT(validated_options.element_num_bytes, 0u);
|
| - EXPECT_GT(validated_options.capacity_num_bytes, 0u);
|
| - EXPECT_EQ(0u, validated_options.capacity_num_bytes %
|
| - validated_options.element_num_bytes);
|
| -
|
| - MojoCreateDataPipeOptions revalidated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&validated_options),
|
| - &revalidated_options));
|
| - EXPECT_EQ(validated_options.struct_size, revalidated_options.struct_size);
|
| - EXPECT_EQ(validated_options.element_num_bytes,
|
| - revalidated_options.element_num_bytes);
|
| - EXPECT_EQ(validated_options.capacity_num_bytes,
|
| - revalidated_options.capacity_num_bytes);
|
| - EXPECT_EQ(validated_options.flags, revalidated_options.flags);
|
| -}
|
| -
|
| -// Checks that a default-computed capacity is correct. (Does not duplicate the
|
| -// checks done by |RevalidateCreateOptions()|.)
|
| -void CheckDefaultCapacity(const MojoCreateDataPipeOptions& validated_options) {
|
| - EXPECT_LE(validated_options.capacity_num_bytes,
|
| - GetConfiguration().default_data_pipe_capacity_bytes);
|
| - EXPECT_GT(validated_options.capacity_num_bytes +
|
| - validated_options.element_num_bytes,
|
| - GetConfiguration().default_data_pipe_capacity_bytes);
|
| -}
|
| -
|
| -// Tests valid inputs to |ValidateCreateOptions()|.
|
| -TEST(DataPipeTest, ValidateCreateOptionsValid) {
|
| - // Default options.
|
| - {
|
| - MojoCreateDataPipeOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK, DataPipe::ValidateCreateOptions(
|
| - NullUserPointer(), &validated_options));
|
| - RevalidateCreateOptions(validated_options);
|
| - CheckDefaultCapacity(validated_options);
|
| - }
|
| -
|
| - // Size member, but nothing beyond.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - offsetof(MojoCreateDataPipeOptions, flags) // |struct_size|.
|
| - };
|
| - MojoCreateDataPipeOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options),
|
| - &validated_options));
|
| - RevalidateCreateOptions(validated_options);
|
| - CheckDefaultCapacity(validated_options);
|
| - }
|
| -
|
| - // Different flags.
|
| - MojoCreateDataPipeOptionsFlags flags_values[] = {
|
| - MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE,
|
| - MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_MAY_DISCARD};
|
| - for (size_t i = 0; i < arraysize(flags_values); i++) {
|
| - const MojoCreateDataPipeOptionsFlags flags = flags_values[i];
|
| -
|
| - // Flags member, but nothing beyond.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - // |struct_size|.
|
| - offsetof(MojoCreateDataPipeOptions, element_num_bytes),
|
| - flags // |flags|.
|
| - };
|
| - MojoCreateDataPipeOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options),
|
| - &validated_options));
|
| - RevalidateCreateOptions(validated_options);
|
| - EXPECT_EQ(options.flags, validated_options.flags);
|
| - CheckDefaultCapacity(validated_options);
|
| - }
|
| -
|
| - // Different capacities (size 1).
|
| - for (uint32_t capacity = 1; capacity <= 100 * 1000 * 1000; capacity *= 10) {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - flags, // |flags|.
|
| - 1, // |element_num_bytes|.
|
| - capacity // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options),
|
| - &validated_options))
|
| - << capacity;
|
| - RevalidateCreateOptions(validated_options);
|
| - EXPECT_EQ(options.flags, validated_options.flags);
|
| - EXPECT_EQ(options.element_num_bytes, validated_options.element_num_bytes);
|
| - EXPECT_EQ(options.capacity_num_bytes,
|
| - validated_options.capacity_num_bytes);
|
| - }
|
| -
|
| - // Small sizes.
|
| - for (uint32_t size = 1; size < 100; size++) {
|
| - // Different capacities.
|
| - for (uint32_t elements = 1; elements <= 1000 * 1000; elements *= 10) {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - flags, // |flags|.
|
| - size, // |element_num_bytes|.
|
| - size * elements // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options),
|
| - &validated_options))
|
| - << size << ", " << elements;
|
| - RevalidateCreateOptions(validated_options);
|
| - EXPECT_EQ(options.flags, validated_options.flags);
|
| - EXPECT_EQ(options.element_num_bytes,
|
| - validated_options.element_num_bytes);
|
| - EXPECT_EQ(options.capacity_num_bytes,
|
| - validated_options.capacity_num_bytes);
|
| - }
|
| -
|
| - // Default capacity.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - flags, // |flags|.
|
| - size, // |element_num_bytes|.
|
| - 0 // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options),
|
| - &validated_options))
|
| - << size;
|
| - RevalidateCreateOptions(validated_options);
|
| - EXPECT_EQ(options.flags, validated_options.flags);
|
| - EXPECT_EQ(options.element_num_bytes,
|
| - validated_options.element_num_bytes);
|
| - CheckDefaultCapacity(validated_options);
|
| - }
|
| -
|
| - // No capacity field.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - // |struct_size|.
|
| - offsetof(MojoCreateDataPipeOptions, capacity_num_bytes),
|
| - flags, // |flags|.
|
| - size // |element_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options),
|
| - &validated_options))
|
| - << size;
|
| - RevalidateCreateOptions(validated_options);
|
| - EXPECT_EQ(options.flags, validated_options.flags);
|
| - EXPECT_EQ(options.element_num_bytes,
|
| - validated_options.element_num_bytes);
|
| - CheckDefaultCapacity(validated_options);
|
| - }
|
| - }
|
| -
|
| - // Larger sizes.
|
| - for (uint32_t size = 100; size <= 100 * 1000; size *= 10) {
|
| - // Capacity of 1000 elements.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - flags, // |flags|.
|
| - size, // |element_num_bytes|.
|
| - 1000 * size // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options),
|
| - &validated_options))
|
| - << size;
|
| - RevalidateCreateOptions(validated_options);
|
| - EXPECT_EQ(options.flags, validated_options.flags);
|
| - EXPECT_EQ(options.element_num_bytes,
|
| - validated_options.element_num_bytes);
|
| - EXPECT_EQ(options.capacity_num_bytes,
|
| - validated_options.capacity_num_bytes);
|
| - }
|
| -
|
| - // Default capacity.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - flags, // |flags|.
|
| - size, // |element_num_bytes|.
|
| - 0 // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options),
|
| - &validated_options))
|
| - << size;
|
| - RevalidateCreateOptions(validated_options);
|
| - EXPECT_EQ(options.flags, validated_options.flags);
|
| - EXPECT_EQ(options.element_num_bytes,
|
| - validated_options.element_num_bytes);
|
| - CheckDefaultCapacity(validated_options);
|
| - }
|
| -
|
| - // No capacity field.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - // |struct_size|.
|
| - offsetof(MojoCreateDataPipeOptions, capacity_num_bytes),
|
| - flags, // |flags|.
|
| - size // |element_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options),
|
| - &validated_options))
|
| - << size;
|
| - RevalidateCreateOptions(validated_options);
|
| - EXPECT_EQ(options.flags, validated_options.flags);
|
| - EXPECT_EQ(options.element_num_bytes,
|
| - validated_options.element_num_bytes);
|
| - CheckDefaultCapacity(validated_options);
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| -TEST(DataPipeTest, ValidateCreateOptionsInvalid) {
|
| - // Invalid |struct_size|.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - 1, // |struct_size|.
|
| - MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
|
| - 1, // |element_num_bytes|.
|
| - 0 // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions unused;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_INVALID_ARGUMENT,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options), &unused));
|
| - }
|
| -
|
| - // Unknown |flags|.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - ~0u, // |flags|.
|
| - 1, // |element_num_bytes|.
|
| - 0 // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions unused;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_UNIMPLEMENTED,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options), &unused));
|
| - }
|
| -
|
| - // Invalid |element_num_bytes|.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
|
| - 0, // |element_num_bytes|.
|
| - 1000 // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions unused;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_INVALID_ARGUMENT,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options), &unused));
|
| - }
|
| - // |element_num_bytes| too big.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
|
| - std::numeric_limits<uint32_t>::max(), // |element_num_bytes|.
|
| - std::numeric_limits<uint32_t>::max() // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions unused;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_RESOURCE_EXHAUSTED,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options), &unused));
|
| - }
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
|
| - std::numeric_limits<uint32_t>::max() - 1000, // |element_num_bytes|.
|
| - std::numeric_limits<uint32_t>::max() - 1000 // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions unused;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_RESOURCE_EXHAUSTED,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options), &unused));
|
| - }
|
| -
|
| - // Invalid |capacity_num_bytes|.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
|
| - 2, // |element_num_bytes|.
|
| - 1 // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions unused;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_INVALID_ARGUMENT,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options), &unused));
|
| - }
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
|
| - 2, // |element_num_bytes|.
|
| - 111 // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions unused;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_INVALID_ARGUMENT,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options), &unused));
|
| - }
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
|
| - 5, // |element_num_bytes|.
|
| - 104 // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions unused;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_INVALID_ARGUMENT,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options), &unused));
|
| - }
|
| - // |capacity_num_bytes| too big.
|
| - {
|
| - MojoCreateDataPipeOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE, // |flags|.
|
| - 8, // |element_num_bytes|.
|
| - 0xffff0000 // |capacity_num_bytes|.
|
| - };
|
| - MojoCreateDataPipeOptions unused;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_RESOURCE_EXHAUSTED,
|
| - DataPipe::ValidateCreateOptions(MakeUserPointer(&options), &unused));
|
| - }
|
| -}
|
| -
|
| -} // namespace
|
| -} // namespace system
|
| -} // namespace mojo
|
|
|