diff options
Diffstat (limited to 'mojo/public/cpp/bindings/tests/data_view_unittest.cc')
-rw-r--r-- | mojo/public/cpp/bindings/tests/data_view_unittest.cc | 303 |
1 files changed, 0 insertions, 303 deletions
diff --git a/mojo/public/cpp/bindings/tests/data_view_unittest.cc b/mojo/public/cpp/bindings/tests/data_view_unittest.cc deleted file mode 100644 index 0ebfda5..0000000 --- a/mojo/public/cpp/bindings/tests/data_view_unittest.cc +++ /dev/null @@ -1,303 +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. - -#include <memory> -#include <string> -#include <unordered_map> -#include <vector> - -#include "base/message_loop/message_loop.h" -#include "mojo/public/cpp/bindings/binding.h" -#include "mojo/public/cpp/bindings/lib/fixed_buffer.h" -#include "mojo/public/cpp/bindings/lib/serialization.h" -#include "mojo/public/interfaces/bindings/tests/test_data_view.mojom.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace mojo { -namespace test { -namespace data_view { -namespace { - -class DataViewTest : public testing::Test { - private: - base::MessageLoop message_loop_; -}; - -struct DataViewHolder { - std::unique_ptr<TestStructDataView> data_view; - std::unique_ptr<mojo::internal::FixedBufferForTesting> buf; - mojo::internal::SerializationContext context; -}; - -std::unique_ptr<DataViewHolder> SerializeTestStruct(TestStructPtr input) { - std::unique_ptr<DataViewHolder> result(new DataViewHolder); - - size_t size = mojo::internal::PrepareToSerialize<TestStructDataView>( - input, &result->context); - - result->buf.reset(new mojo::internal::FixedBufferForTesting(size)); - internal::TestStruct_Data* data = nullptr; - mojo::internal::Serialize<TestStructDataView>(input, result->buf.get(), &data, - &result->context); - - result->data_view.reset(new TestStructDataView(data, &result->context)); - return result; -} - -class TestInterfaceImpl : public TestInterface { - public: - explicit TestInterfaceImpl(TestInterfaceRequest request) - : binding_(this, std::move(request)) {} - ~TestInterfaceImpl() override {} - - // TestInterface implementation: - void Echo(int32_t value, const EchoCallback& callback) override { - callback.Run(value); - } - - private: - Binding<TestInterface> binding_; -}; - -} // namespace - -TEST_F(DataViewTest, String) { - TestStructPtr obj(TestStruct::New()); - obj->f_string = "hello"; - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - StringDataView string_data_view; - data_view.GetFStringDataView(&string_data_view); - - ASSERT_FALSE(string_data_view.is_null()); - EXPECT_EQ(std::string("hello"), - std::string(string_data_view.storage(), string_data_view.size())); -} - -TEST_F(DataViewTest, NestedStruct) { - TestStructPtr obj(TestStruct::New()); - obj->f_struct = NestedStruct::New(); - obj->f_struct->f_int32 = 42; - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - NestedStructDataView struct_data_view; - data_view.GetFStructDataView(&struct_data_view); - - ASSERT_FALSE(struct_data_view.is_null()); - EXPECT_EQ(42, struct_data_view.f_int32()); -} - -TEST_F(DataViewTest, NativeStruct) { - TestStructPtr obj(TestStruct::New()); - obj->f_native_struct = NativeStruct::New(); - obj->f_native_struct->data = std::vector<uint8_t>({3, 2, 1}); - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - NativeStructDataView struct_data_view; - data_view.GetFNativeStructDataView(&struct_data_view); - - ASSERT_FALSE(struct_data_view.is_null()); - ASSERT_EQ(3u, struct_data_view.size()); - EXPECT_EQ(3, struct_data_view[0]); - EXPECT_EQ(2, struct_data_view[1]); - EXPECT_EQ(1, struct_data_view[2]); - EXPECT_EQ(3, *struct_data_view.data()); -} - -TEST_F(DataViewTest, BoolArray) { - TestStructPtr obj(TestStruct::New()); - obj->f_bool_array = {true, false}; - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - ArrayDataView<bool> array_data_view; - data_view.GetFBoolArrayDataView(&array_data_view); - - ASSERT_FALSE(array_data_view.is_null()); - ASSERT_EQ(2u, array_data_view.size()); - EXPECT_TRUE(array_data_view[0]); - EXPECT_FALSE(array_data_view[1]); -} - -TEST_F(DataViewTest, IntegerArray) { - TestStructPtr obj(TestStruct::New()); - obj->f_int32_array = {1024, 128}; - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - ArrayDataView<int32_t> array_data_view; - data_view.GetFInt32ArrayDataView(&array_data_view); - - ASSERT_FALSE(array_data_view.is_null()); - ASSERT_EQ(2u, array_data_view.size()); - EXPECT_EQ(1024, array_data_view[0]); - EXPECT_EQ(128, array_data_view[1]); - EXPECT_EQ(1024, *array_data_view.data()); -} - -TEST_F(DataViewTest, EnumArray) { - TestStructPtr obj(TestStruct::New()); - obj->f_enum_array = {TestEnum::VALUE_1, TestEnum::VALUE_0}; - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - ArrayDataView<TestEnum> array_data_view; - data_view.GetFEnumArrayDataView(&array_data_view); - - ASSERT_FALSE(array_data_view.is_null()); - ASSERT_EQ(2u, array_data_view.size()); - EXPECT_EQ(TestEnum::VALUE_1, array_data_view[0]); - EXPECT_EQ(TestEnum::VALUE_0, array_data_view[1]); - EXPECT_EQ(TestEnum::VALUE_0, *(array_data_view.data() + 1)); - - TestEnum output; - ASSERT_TRUE(array_data_view.Read(0, &output)); - EXPECT_EQ(TestEnum::VALUE_1, output); -} - -TEST_F(DataViewTest, InterfaceArray) { - TestInterfacePtr ptr; - TestInterfaceImpl impl(MakeRequest(&ptr)); - - TestStructPtr obj(TestStruct::New()); - obj->f_interface_array.push_back(std::move(ptr)); - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - ArrayDataView<TestInterfacePtrDataView> array_data_view; - data_view.GetFInterfaceArrayDataView(&array_data_view); - - ASSERT_FALSE(array_data_view.is_null()); - ASSERT_EQ(1u, array_data_view.size()); - - TestInterfacePtr ptr2 = array_data_view.Take<TestInterfacePtr>(0); - ASSERT_TRUE(ptr2); - int32_t result = 0; - ASSERT_TRUE(ptr2->Echo(42, &result)); - EXPECT_EQ(42, result); -} - -TEST_F(DataViewTest, NestedArray) { - TestStructPtr obj(TestStruct::New()); - obj->f_nested_array = {{3, 4}, {2}}; - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - ArrayDataView<ArrayDataView<int32_t>> array_data_view; - data_view.GetFNestedArrayDataView(&array_data_view); - - ASSERT_FALSE(array_data_view.is_null()); - ASSERT_EQ(2u, array_data_view.size()); - - ArrayDataView<int32_t> nested_array_data_view; - array_data_view.GetDataView(0, &nested_array_data_view); - ASSERT_FALSE(nested_array_data_view.is_null()); - ASSERT_EQ(2u, nested_array_data_view.size()); - EXPECT_EQ(4, nested_array_data_view[1]); - - std::vector<int32_t> vec; - ASSERT_TRUE(array_data_view.Read(1, &vec)); - ASSERT_EQ(1u, vec.size()); - EXPECT_EQ(2, vec[0]); -} - -TEST_F(DataViewTest, StructArray) { - NestedStructPtr nested_struct(NestedStruct::New()); - nested_struct->f_int32 = 42; - - TestStructPtr obj(TestStruct::New()); - obj->f_struct_array.push_back(std::move(nested_struct)); - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - ArrayDataView<NestedStructDataView> array_data_view; - data_view.GetFStructArrayDataView(&array_data_view); - - ASSERT_FALSE(array_data_view.is_null()); - ASSERT_EQ(1u, array_data_view.size()); - - NestedStructDataView struct_data_view; - array_data_view.GetDataView(0, &struct_data_view); - ASSERT_FALSE(struct_data_view.is_null()); - EXPECT_EQ(42, struct_data_view.f_int32()); - - NestedStructPtr nested_struct2; - ASSERT_TRUE(array_data_view.Read(0, &nested_struct2)); - ASSERT_TRUE(nested_struct2); - EXPECT_EQ(42, nested_struct2->f_int32); -} - -TEST_F(DataViewTest, Map) { - TestStructPtr obj(TestStruct::New()); - obj->f_map["1"] = 1; - obj->f_map["2"] = 2; - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - MapDataView<StringDataView, int32_t> map_data_view; - data_view.GetFMapDataView(&map_data_view); - - ASSERT_FALSE(map_data_view.is_null()); - ASSERT_EQ(2u, map_data_view.size()); - - ASSERT_FALSE(map_data_view.keys().is_null()); - ASSERT_EQ(2u, map_data_view.keys().size()); - - ASSERT_FALSE(map_data_view.values().is_null()); - ASSERT_EQ(2u, map_data_view.values().size()); - - std::vector<std::string> keys; - ASSERT_TRUE(map_data_view.ReadKeys(&keys)); - std::vector<int32_t> values; - ASSERT_TRUE(map_data_view.ReadValues(&values)); - - std::unordered_map<std::string, int32_t> map; - for (size_t i = 0; i < 2; ++i) - map[keys[i]] = values[i]; - - EXPECT_EQ(1, map["1"]); - EXPECT_EQ(2, map["2"]); -} - -TEST_F(DataViewTest, UnionArray) { - TestUnionPtr union_ptr(TestUnion::New()); - union_ptr->set_f_int32(1024); - - TestStructPtr obj(TestStruct::New()); - obj->f_union_array.push_back(std::move(union_ptr)); - - auto data_view_holder = SerializeTestStruct(std::move(obj)); - auto& data_view = *data_view_holder->data_view; - - ArrayDataView<TestUnionDataView> array_data_view; - data_view.GetFUnionArrayDataView(&array_data_view); - ASSERT_FALSE(array_data_view.is_null()); - ASSERT_EQ(1u, array_data_view.size()); - - TestUnionDataView union_data_view; - array_data_view.GetDataView(0, &union_data_view); - ASSERT_FALSE(union_data_view.is_null()); - - TestUnionPtr union_ptr2; - ASSERT_TRUE(array_data_view.Read(0, &union_ptr2)); - ASSERT_TRUE(union_ptr2->is_f_int32()); - EXPECT_EQ(1024, union_ptr2->get_f_int32()); -} - -} // namespace data_view -} // namespace test -} // namespace mojo |