| Index: mojo/common/common_custom_types_unittest.cc
|
| diff --git a/mojo/common/common_custom_types_unittest.cc b/mojo/common/common_custom_types_unittest.cc
|
| index 2223c26c2d0956d45ff268bfad9029b87be61397..1d986a20db3f0508b24a9b37c7b44b175fcbb584 100644
|
| --- a/mojo/common/common_custom_types_unittest.cc
|
| +++ b/mojo/common/common_custom_types_unittest.cc
|
| @@ -5,6 +5,7 @@
|
| #include "base/files/file_path.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| +#include "base/values.h"
|
| #include "mojo/common/common_custom_types.mojom.h"
|
| #include "mojo/common/test_common_custom_types.mojom.h"
|
| #include "mojo/public/cpp/bindings/binding.h"
|
| @@ -13,6 +14,7 @@
|
| namespace mojo {
|
| namespace common {
|
| namespace test {
|
| +namespace {
|
|
|
| class TestFilePathImpl : public TestFilePath {
|
| public:
|
| @@ -29,8 +31,40 @@ class TestFilePathImpl : public TestFilePath {
|
| mojo::Binding<TestFilePath> binding_;
|
| };
|
|
|
| -TEST(CommonCustomTypesTest, FilePath) {
|
| - base::MessageLoop message_loop;
|
| +class TestValueImpl : public TestValue {
|
| + public:
|
| + explicit TestValueImpl(TestValueRequest request)
|
| + : binding_(this, std::move(request)) {}
|
| +
|
| + // TestValue implementation:
|
| + void BounceDictionaryValue(
|
| + const base::DictionaryValue& in,
|
| + const BounceDictionaryValueCallback& callback) override {
|
| + callback.Run(in);
|
| + }
|
| + void BounceListValue(const base::ListValue& in,
|
| + const BounceListValueCallback& callback) override {
|
| + callback.Run(in);
|
| + }
|
| +
|
| + private:
|
| + mojo::Binding<TestValue> binding_;
|
| +};
|
| +
|
| +class CommonCustomTypesTest : public testing::Test {
|
| + protected:
|
| + CommonCustomTypesTest() {}
|
| + ~CommonCustomTypesTest() override {}
|
| +
|
| + private:
|
| + base::MessageLoop message_loop_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(CommonCustomTypesTest);
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +TEST_F(CommonCustomTypesTest, FilePath) {
|
| base::RunLoop run_loop;
|
|
|
| TestFilePathPtr ptr;
|
| @@ -47,6 +81,57 @@ TEST(CommonCustomTypesTest, FilePath) {
|
| run_loop.Run();
|
| }
|
|
|
| +TEST_F(CommonCustomTypesTest, Value) {
|
| + TestValuePtr ptr;
|
| + TestValueImpl impl(GetProxy(&ptr));
|
| +
|
| + base::DictionaryValue dict;
|
| + dict.SetBoolean("bool", false);
|
| + dict.SetInteger("int", 2);
|
| + dict.SetString("string", "some string");
|
| + dict.SetBoolean("nested.bool", true);
|
| + dict.SetInteger("nested.int", 9);
|
| + dict.Set(
|
| + "some_binary",
|
| + base::WrapUnique(base::BinaryValue::CreateWithCopiedBuffer("mojo", 4)));
|
| + {
|
| + std::unique_ptr<base::ListValue> dict_list(new base::ListValue());
|
| + dict_list->AppendString("string");
|
| + dict_list->AppendBoolean(true);
|
| + dict.Set("list", std::move(dict_list));
|
| + }
|
| + {
|
| + base::RunLoop run_loop;
|
| + ptr->BounceDictionaryValue(
|
| + dict, [&run_loop, &dict](const base::DictionaryValue& out) {
|
| + EXPECT_TRUE(dict.Equals(&out));
|
| + run_loop.Quit();
|
| + });
|
| + run_loop.Run();
|
| + }
|
| +
|
| + base::ListValue list;
|
| + list.AppendString("string");
|
| + list.AppendDouble(42.1);
|
| + list.AppendBoolean(true);
|
| + list.Append(
|
| + base::WrapUnique(base::BinaryValue::CreateWithCopiedBuffer("mojo", 4)));
|
| + {
|
| + std::unique_ptr<base::DictionaryValue> list_dict(
|
| + new base::DictionaryValue());
|
| + list_dict->SetString("string", "str");
|
| + list.Append(std::move(list_dict));
|
| + }
|
| + {
|
| + base::RunLoop run_loop;
|
| + ptr->BounceListValue(list, [&run_loop, &list](const base::ListValue& out) {
|
| + EXPECT_TRUE(list.Equals(&out));
|
| + run_loop.Quit();
|
| + });
|
| + run_loop.Run();
|
| + }
|
| +}
|
| +
|
| } // namespace test
|
| } // namespace common
|
| } // namespace mojo
|
|
|