| Index: mojo/edk/system/shared_buffer_dispatcher_unittest.cc
|
| diff --git a/mojo/edk/system/shared_buffer_dispatcher_unittest.cc b/mojo/edk/system/shared_buffer_dispatcher_unittest.cc
|
| deleted file mode 100644
|
| index d46ffe38b87b9e451f9c36ee127fb707345e5fdb..0000000000000000000000000000000000000000
|
| --- a/mojo/edk/system/shared_buffer_dispatcher_unittest.cc
|
| +++ /dev/null
|
| @@ -1,299 +0,0 @@
|
| -// Copyright 2014 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/shared_buffer_dispatcher.h"
|
| -
|
| -#include <limits>
|
| -
|
| -#include "base/macros.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "mojo/edk/embedder/platform_shared_buffer.h"
|
| -#include "mojo/edk/embedder/simple_platform_support.h"
|
| -#include "mojo/edk/system/dispatcher.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace mojo {
|
| -namespace system {
|
| -namespace {
|
| -
|
| -// NOTE(vtl): There's currently not much to test for in
|
| -// |SharedBufferDispatcher::ValidateCreateOptions()|, but the tests should be
|
| -// expanded if/when options are added, so I've kept the general form of the
|
| -// tests from data_pipe_unittest.cc.
|
| -
|
| -const uint32_t kSizeOfCreateOptions = sizeof(MojoCreateSharedBufferOptions);
|
| -
|
| -// 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 MojoCreateSharedBufferOptions& validated_options) {
|
| - EXPECT_EQ(kSizeOfCreateOptions, validated_options.struct_size);
|
| - // Nothing to check for flags.
|
| -
|
| - MojoCreateSharedBufferOptions revalidated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - SharedBufferDispatcher::ValidateCreateOptions(
|
| - MakeUserPointer(&validated_options), &revalidated_options));
|
| - EXPECT_EQ(validated_options.struct_size, revalidated_options.struct_size);
|
| - EXPECT_EQ(validated_options.flags, revalidated_options.flags);
|
| -}
|
| -
|
| -class SharedBufferDispatcherTest : public testing::Test {
|
| - public:
|
| - SharedBufferDispatcherTest() {}
|
| - virtual ~SharedBufferDispatcherTest() {}
|
| -
|
| - embedder::PlatformSupport* platform_support() { return &platform_support_; }
|
| -
|
| - private:
|
| - embedder::SimplePlatformSupport platform_support_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SharedBufferDispatcherTest);
|
| -};
|
| -
|
| -// Tests valid inputs to |ValidateCreateOptions()|.
|
| -TEST_F(SharedBufferDispatcherTest, ValidateCreateOptionsValid) {
|
| - // Default options.
|
| - {
|
| - MojoCreateSharedBufferOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - SharedBufferDispatcher::ValidateCreateOptions(
|
| - NullUserPointer(), &validated_options));
|
| - RevalidateCreateOptions(validated_options);
|
| - }
|
| -
|
| - // Different flags.
|
| - MojoCreateSharedBufferOptionsFlags flags_values[] = {
|
| - MOJO_CREATE_SHARED_BUFFER_OPTIONS_FLAG_NONE};
|
| - for (size_t i = 0; i < arraysize(flags_values); i++) {
|
| - const MojoCreateSharedBufferOptionsFlags flags = flags_values[i];
|
| -
|
| - // Different capacities (size 1).
|
| - for (uint32_t capacity = 1; capacity <= 100 * 1000 * 1000; capacity *= 10) {
|
| - MojoCreateSharedBufferOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - flags // |flags|.
|
| - };
|
| - MojoCreateSharedBufferOptions validated_options = {};
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - SharedBufferDispatcher::ValidateCreateOptions(
|
| - MakeUserPointer(&options), &validated_options))
|
| - << capacity;
|
| - RevalidateCreateOptions(validated_options);
|
| - EXPECT_EQ(options.flags, validated_options.flags);
|
| - }
|
| - }
|
| -}
|
| -
|
| -TEST_F(SharedBufferDispatcherTest, ValidateCreateOptionsInvalid) {
|
| - // Invalid |struct_size|.
|
| - {
|
| - MojoCreateSharedBufferOptions options = {
|
| - 1, // |struct_size|.
|
| - MOJO_CREATE_SHARED_BUFFER_OPTIONS_FLAG_NONE // |flags|.
|
| - };
|
| - MojoCreateSharedBufferOptions unused;
|
| - EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
|
| - SharedBufferDispatcher::ValidateCreateOptions(
|
| - MakeUserPointer(&options), &unused));
|
| - }
|
| -
|
| - // Unknown |flags|.
|
| - {
|
| - MojoCreateSharedBufferOptions options = {
|
| - kSizeOfCreateOptions, // |struct_size|.
|
| - ~0u // |flags|.
|
| - };
|
| - MojoCreateSharedBufferOptions unused;
|
| - EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED,
|
| - SharedBufferDispatcher::ValidateCreateOptions(
|
| - MakeUserPointer(&options), &unused));
|
| - }
|
| -}
|
| -
|
| -TEST_F(SharedBufferDispatcherTest, CreateAndMapBuffer) {
|
| - scoped_refptr<SharedBufferDispatcher> dispatcher;
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - SharedBufferDispatcher::Create(
|
| - platform_support(),
|
| - SharedBufferDispatcher::kDefaultCreateOptions,
|
| - 100,
|
| - &dispatcher));
|
| - ASSERT_TRUE(dispatcher.get());
|
| - EXPECT_EQ(Dispatcher::kTypeSharedBuffer, dispatcher->GetType());
|
| -
|
| - // Make a couple of mappings.
|
| - scoped_ptr<embedder::PlatformSharedBufferMapping> mapping1;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_OK,
|
| - dispatcher->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping1));
|
| - ASSERT_TRUE(mapping1);
|
| - ASSERT_TRUE(mapping1->GetBase());
|
| - EXPECT_EQ(100u, mapping1->GetLength());
|
| - // Write something.
|
| - static_cast<char*>(mapping1->GetBase())[50] = 'x';
|
| -
|
| - scoped_ptr<embedder::PlatformSharedBufferMapping> mapping2;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_OK,
|
| - dispatcher->MapBuffer(50, 50, MOJO_MAP_BUFFER_FLAG_NONE, &mapping2));
|
| - ASSERT_TRUE(mapping2);
|
| - ASSERT_TRUE(mapping2->GetBase());
|
| - EXPECT_EQ(50u, mapping2->GetLength());
|
| - EXPECT_EQ('x', static_cast<char*>(mapping2->GetBase())[0]);
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close());
|
| -
|
| - // Check that we can still read/write to mappings after the dispatcher has
|
| - // gone away.
|
| - static_cast<char*>(mapping2->GetBase())[1] = 'y';
|
| - EXPECT_EQ('y', static_cast<char*>(mapping1->GetBase())[51]);
|
| -}
|
| -
|
| -TEST_F(SharedBufferDispatcherTest, DuplicateBufferHandle) {
|
| - scoped_refptr<SharedBufferDispatcher> dispatcher1;
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - SharedBufferDispatcher::Create(
|
| - platform_support(),
|
| - SharedBufferDispatcher::kDefaultCreateOptions,
|
| - 100,
|
| - &dispatcher1));
|
| -
|
| - // Map and write something.
|
| - scoped_ptr<embedder::PlatformSharedBufferMapping> mapping;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_OK,
|
| - dispatcher1->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
|
| - static_cast<char*>(mapping->GetBase())[0] = 'x';
|
| - mapping.reset();
|
| -
|
| - // Duplicate |dispatcher1| and then close it.
|
| - scoped_refptr<Dispatcher> dispatcher2;
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_OK,
|
| - dispatcher1->DuplicateBufferHandle(NullUserPointer(), &dispatcher2));
|
| - ASSERT_TRUE(dispatcher2.get());
|
| - EXPECT_EQ(Dispatcher::kTypeSharedBuffer, dispatcher2->GetType());
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close());
|
| -
|
| - // Map |dispatcher2| and read something.
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_OK,
|
| - dispatcher2->MapBuffer(0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
|
| - EXPECT_EQ('x', static_cast<char*>(mapping->GetBase())[0]);
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->Close());
|
| -}
|
| -
|
| -TEST_F(SharedBufferDispatcherTest, DuplicateBufferHandleOptionsValid) {
|
| - scoped_refptr<SharedBufferDispatcher> dispatcher1;
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - SharedBufferDispatcher::Create(
|
| - platform_support(),
|
| - SharedBufferDispatcher::kDefaultCreateOptions,
|
| - 100,
|
| - &dispatcher1));
|
| -
|
| - MojoDuplicateBufferHandleOptions options[] = {
|
| - {sizeof(MojoDuplicateBufferHandleOptions),
|
| - MOJO_DUPLICATE_BUFFER_HANDLE_OPTIONS_FLAG_NONE},
|
| - {sizeof(MojoDuplicateBufferHandleOptionsFlags), ~0u}};
|
| - for (size_t i = 0; i < arraysize(options); i++) {
|
| - scoped_refptr<Dispatcher> dispatcher2;
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - dispatcher1->DuplicateBufferHandle(MakeUserPointer(&options[i]),
|
| - &dispatcher2));
|
| - ASSERT_TRUE(dispatcher2.get());
|
| - EXPECT_EQ(Dispatcher::kTypeSharedBuffer, dispatcher2->GetType());
|
| - EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->Close());
|
| - }
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close());
|
| -}
|
| -
|
| -TEST_F(SharedBufferDispatcherTest, DuplicateBufferHandleOptionsInvalid) {
|
| - scoped_refptr<SharedBufferDispatcher> dispatcher1;
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - SharedBufferDispatcher::Create(
|
| - platform_support(),
|
| - SharedBufferDispatcher::kDefaultCreateOptions,
|
| - 100,
|
| - &dispatcher1));
|
| -
|
| - // Invalid |struct_size|.
|
| - {
|
| - MojoDuplicateBufferHandleOptions options = {
|
| - 1u, MOJO_DUPLICATE_BUFFER_HANDLE_OPTIONS_FLAG_NONE};
|
| - scoped_refptr<Dispatcher> dispatcher2;
|
| - EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
|
| - dispatcher1->DuplicateBufferHandle(MakeUserPointer(&options),
|
| - &dispatcher2));
|
| - EXPECT_FALSE(dispatcher2.get());
|
| - }
|
| -
|
| - // Unknown |flags|.
|
| - {
|
| - MojoDuplicateBufferHandleOptions options = {
|
| - sizeof(MojoDuplicateBufferHandleOptions), ~0u};
|
| - scoped_refptr<Dispatcher> dispatcher2;
|
| - EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED,
|
| - dispatcher1->DuplicateBufferHandle(MakeUserPointer(&options),
|
| - &dispatcher2));
|
| - EXPECT_FALSE(dispatcher2.get());
|
| - }
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close());
|
| -}
|
| -
|
| -TEST_F(SharedBufferDispatcherTest, CreateInvalidNumBytes) {
|
| - // Size too big.
|
| - scoped_refptr<SharedBufferDispatcher> dispatcher;
|
| - EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED,
|
| - SharedBufferDispatcher::Create(
|
| - platform_support(),
|
| - SharedBufferDispatcher::kDefaultCreateOptions,
|
| - std::numeric_limits<uint64_t>::max(),
|
| - &dispatcher));
|
| - EXPECT_FALSE(dispatcher.get());
|
| -
|
| - // Zero size.
|
| - EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
|
| - SharedBufferDispatcher::Create(
|
| - platform_support(),
|
| - SharedBufferDispatcher::kDefaultCreateOptions,
|
| - 0,
|
| - &dispatcher));
|
| - EXPECT_FALSE(dispatcher.get());
|
| -}
|
| -
|
| -TEST_F(SharedBufferDispatcherTest, MapBufferInvalidArguments) {
|
| - scoped_refptr<SharedBufferDispatcher> dispatcher;
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - SharedBufferDispatcher::Create(
|
| - platform_support(),
|
| - SharedBufferDispatcher::kDefaultCreateOptions,
|
| - 100,
|
| - &dispatcher));
|
| -
|
| - scoped_ptr<embedder::PlatformSharedBufferMapping> mapping;
|
| - EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
|
| - dispatcher->MapBuffer(0, 101, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
|
| - EXPECT_FALSE(mapping);
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
|
| - dispatcher->MapBuffer(1, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
|
| - EXPECT_FALSE(mapping);
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
|
| - dispatcher->MapBuffer(0, 0, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
|
| - EXPECT_FALSE(mapping);
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close());
|
| -}
|
| -
|
| -} // namespace
|
| -} // namespace system
|
| -} // namespace mojo
|
|
|