| Index: mojo/public/cpp/bindings/tests/struct_unittest.cc
|
| diff --git a/mojo/public/cpp/bindings/tests/struct_unittest.cc b/mojo/public/cpp/bindings/tests/struct_unittest.cc
|
| index dcca35f34a8b8b345f113fdd1dcb9f44c22e3570..13ba507e153ed1792f6bf2dae90ff7e7995c9ea2 100644
|
| --- a/mojo/public/cpp/bindings/tests/struct_unittest.cc
|
| +++ b/mojo/public/cpp/bindings/tests/struct_unittest.cc
|
| @@ -17,12 +17,7 @@ namespace test {
|
| namespace {
|
|
|
| RectPtr MakeRect(int32_t factor = 1) {
|
| - RectPtr rect(Rect::New());
|
| - rect->x = 1 * factor;
|
| - rect->y = 2 * factor;
|
| - rect->width = 10 * factor;
|
| - rect->height = 20 * factor;
|
| - return rect;
|
| + return Rect::New(1 * factor, 2 * factor, 10 * factor, 20 * factor);
|
| }
|
|
|
| void CheckRect(const Rect& rect, int32_t factor = 1) {
|
| @@ -33,19 +28,10 @@ void CheckRect(const Rect& rect, int32_t factor = 1) {
|
| }
|
|
|
| MultiVersionStructPtr MakeMultiVersionStruct() {
|
| - MultiVersionStructPtr output(MultiVersionStruct::New());
|
| - output->f_int32 = 123;
|
| - output->f_rect = MakeRect(5);
|
| - output->f_string.emplace("hello");
|
| - output->f_array.emplace(3);
|
| - (*output->f_array)[0] = 10;
|
| - (*output->f_array)[1] = 9;
|
| - (*output->f_array)[2] = 8;
|
| MessagePipe pipe;
|
| - output->f_message_pipe = std::move(pipe.handle0);
|
| - output->f_int16 = 42;
|
| -
|
| - return output;
|
| + return MultiVersionStruct::New(123, MakeRect(5), std::string("hello"),
|
| + std::vector<int8_t>{10, 9, 8},
|
| + std::move(pipe.handle0), false, 42);
|
| }
|
|
|
| template <typename U, typename T>
|
| @@ -166,9 +152,7 @@ TEST_F(StructTest, Construction_StructPointers) {
|
|
|
| // Serialization test of a struct with struct pointers.
|
| TEST_F(StructTest, Serialization_StructPointers) {
|
| - RectPairPtr pair(RectPair::New());
|
| - pair->first = MakeRect();
|
| - pair->second = MakeRect();
|
| + RectPairPtr pair(RectPair::New(MakeRect(), MakeRect()));
|
|
|
| size_t size =
|
| mojo::internal::PrepareToSerialize<RectPairDataView>(pair, nullptr);
|
| @@ -187,11 +171,12 @@ TEST_F(StructTest, Serialization_StructPointers) {
|
|
|
| // Serialization test of a struct with an array member.
|
| TEST_F(StructTest, Serialization_ArrayPointers) {
|
| - NamedRegionPtr region(NamedRegion::New());
|
| - region->name.emplace("region");
|
| - region->rects.emplace(4);
|
| - for (size_t i = 0; i < region->rects->size(); ++i)
|
| - (*region->rects)[i] = MakeRect(static_cast<int32_t>(i) + 1);
|
| + std::vector<RectPtr> rects;
|
| + for (size_t i = 0; i < 4; ++i)
|
| + rects.push_back(MakeRect(static_cast<int32_t>(i) + 1));
|
| +
|
| + NamedRegionPtr region(
|
| + NamedRegion::New(std::string("region"), std::move(rects)));
|
|
|
| size_t size =
|
| mojo::internal::PrepareToSerialize<NamedRegionDataView>(region, nullptr);
|
| @@ -247,10 +232,8 @@ TEST_F(StructTest, Serialization_NullArrayPointers) {
|
| // Tests deserializing structs as a newer version.
|
| TEST_F(StructTest, Versioning_OldToNew) {
|
| {
|
| - MultiVersionStructV0Ptr input(MultiVersionStructV0::New());
|
| - input->f_int32 = 123;
|
| - MultiVersionStructPtr expected_output(MultiVersionStruct::New());
|
| - expected_output->f_int32 = 123;
|
| + MultiVersionStructV0Ptr input(MultiVersionStructV0::New(123));
|
| + MultiVersionStructPtr expected_output(MultiVersionStruct::New(123));
|
|
|
| MultiVersionStructPtr output =
|
| SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input));
|
| @@ -259,12 +242,9 @@ TEST_F(StructTest, Versioning_OldToNew) {
|
| }
|
|
|
| {
|
| - MultiVersionStructV1Ptr input(MultiVersionStructV1::New());
|
| - input->f_int32 = 123;
|
| - input->f_rect = MakeRect(5);
|
| - MultiVersionStructPtr expected_output(MultiVersionStruct::New());
|
| - expected_output->f_int32 = 123;
|
| - expected_output->f_rect = MakeRect(5);
|
| + MultiVersionStructV1Ptr input(MultiVersionStructV1::New(123, MakeRect(5)));
|
| + MultiVersionStructPtr expected_output(
|
| + MultiVersionStruct::New(123, MakeRect(5)));
|
|
|
| MultiVersionStructPtr output =
|
| SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input));
|
| @@ -273,14 +253,10 @@ TEST_F(StructTest, Versioning_OldToNew) {
|
| }
|
|
|
| {
|
| - MultiVersionStructV3Ptr input(MultiVersionStructV3::New());
|
| - input->f_int32 = 123;
|
| - input->f_rect = MakeRect(5);
|
| - input->f_string.emplace("hello");
|
| - MultiVersionStructPtr expected_output(MultiVersionStruct::New());
|
| - expected_output->f_int32 = 123;
|
| - expected_output->f_rect = MakeRect(5);
|
| - expected_output->f_string.emplace("hello");
|
| + MultiVersionStructV3Ptr input(
|
| + MultiVersionStructV3::New(123, MakeRect(5), std::string("hello")));
|
| + MultiVersionStructPtr expected_output(
|
| + MultiVersionStruct::New(123, MakeRect(5), std::string("hello")));
|
|
|
| MultiVersionStructPtr output =
|
| SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input));
|
| @@ -289,22 +265,10 @@ TEST_F(StructTest, Versioning_OldToNew) {
|
| }
|
|
|
| {
|
| - MultiVersionStructV5Ptr input(MultiVersionStructV5::New());
|
| - input->f_int32 = 123;
|
| - input->f_rect = MakeRect(5);
|
| - input->f_string.emplace("hello");
|
| - input->f_array.emplace(3);
|
| - (*input->f_array)[0] = 10;
|
| - (*input->f_array)[1] = 9;
|
| - (*input->f_array)[2] = 8;
|
| - MultiVersionStructPtr expected_output(MultiVersionStruct::New());
|
| - expected_output->f_int32 = 123;
|
| - expected_output->f_rect = MakeRect(5);
|
| - expected_output->f_string.emplace("hello");
|
| - expected_output->f_array.emplace(3);
|
| - (*expected_output->f_array)[0] = 10;
|
| - (*expected_output->f_array)[1] = 9;
|
| - (*expected_output->f_array)[2] = 8;
|
| + MultiVersionStructV5Ptr input(MultiVersionStructV5::New(
|
| + 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8}));
|
| + MultiVersionStructPtr expected_output(MultiVersionStruct::New(
|
| + 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8}));
|
|
|
| MultiVersionStructPtr output =
|
| SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input));
|
| @@ -313,25 +277,13 @@ TEST_F(StructTest, Versioning_OldToNew) {
|
| }
|
|
|
| {
|
| - MultiVersionStructV7Ptr input(MultiVersionStructV7::New());
|
| - input->f_int32 = 123;
|
| - input->f_rect = MakeRect(5);
|
| - input->f_string.emplace("hello");
|
| - input->f_array.emplace(3);
|
| - (*input->f_array)[0] = 10;
|
| - (*input->f_array)[1] = 9;
|
| - (*input->f_array)[2] = 8;
|
| MessagePipe pipe;
|
| - input->f_message_pipe = std::move(pipe.handle0);
|
| -
|
| - MultiVersionStructPtr expected_output(MultiVersionStruct::New());
|
| - expected_output->f_int32 = 123;
|
| - expected_output->f_rect = MakeRect(5);
|
| - expected_output->f_string.emplace("hello");
|
| - expected_output->f_array.emplace(3);
|
| - (*expected_output->f_array)[0] = 10;
|
| - (*expected_output->f_array)[1] = 9;
|
| - (*expected_output->f_array)[2] = 8;
|
| + MultiVersionStructV7Ptr input(MultiVersionStructV7::New(
|
| + 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8},
|
| + std::move(pipe.handle0), false));
|
| +
|
| + MultiVersionStructPtr expected_output(MultiVersionStruct::New(
|
| + 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8}));
|
| // Save the raw handle value separately so that we can compare later.
|
| MojoHandle expected_handle = input->f_message_pipe.get().value();
|
|
|
| @@ -348,14 +300,8 @@ TEST_F(StructTest, Versioning_OldToNew) {
|
| TEST_F(StructTest, Versioning_NewToOld) {
|
| {
|
| MultiVersionStructPtr input = MakeMultiVersionStruct();
|
| - MultiVersionStructV7Ptr expected_output(MultiVersionStructV7::New());
|
| - expected_output->f_int32 = 123;
|
| - expected_output->f_rect = MakeRect(5);
|
| - expected_output->f_string.emplace("hello");
|
| - expected_output->f_array.emplace(3);
|
| - (*expected_output->f_array)[0] = 10;
|
| - (*expected_output->f_array)[1] = 9;
|
| - (*expected_output->f_array)[2] = 8;
|
| + MultiVersionStructV7Ptr expected_output(MultiVersionStructV7::New(
|
| + 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8}));
|
| // Save the raw handle value separately so that we can compare later.
|
| MojoHandle expected_handle = input->f_message_pipe.get().value();
|
|
|
| @@ -369,14 +315,8 @@ TEST_F(StructTest, Versioning_NewToOld) {
|
|
|
| {
|
| MultiVersionStructPtr input = MakeMultiVersionStruct();
|
| - MultiVersionStructV5Ptr expected_output(MultiVersionStructV5::New());
|
| - expected_output->f_int32 = 123;
|
| - expected_output->f_rect = MakeRect(5);
|
| - expected_output->f_string.emplace("hello");
|
| - expected_output->f_array.emplace(3);
|
| - (*expected_output->f_array)[0] = 10;
|
| - (*expected_output->f_array)[1] = 9;
|
| - (*expected_output->f_array)[2] = 8;
|
| + MultiVersionStructV5Ptr expected_output(MultiVersionStructV5::New(
|
| + 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8}));
|
|
|
| MultiVersionStructV5Ptr output =
|
| SerializeAndDeserialize<MultiVersionStructV5Ptr>(std::move(input));
|
| @@ -386,10 +326,8 @@ TEST_F(StructTest, Versioning_NewToOld) {
|
|
|
| {
|
| MultiVersionStructPtr input = MakeMultiVersionStruct();
|
| - MultiVersionStructV3Ptr expected_output(MultiVersionStructV3::New());
|
| - expected_output->f_int32 = 123;
|
| - expected_output->f_rect = MakeRect(5);
|
| - expected_output->f_string.emplace("hello");
|
| + MultiVersionStructV3Ptr expected_output(
|
| + MultiVersionStructV3::New(123, MakeRect(5), std::string("hello")));
|
|
|
| MultiVersionStructV3Ptr output =
|
| SerializeAndDeserialize<MultiVersionStructV3Ptr>(std::move(input));
|
| @@ -399,9 +337,8 @@ TEST_F(StructTest, Versioning_NewToOld) {
|
|
|
| {
|
| MultiVersionStructPtr input = MakeMultiVersionStruct();
|
| - MultiVersionStructV1Ptr expected_output(MultiVersionStructV1::New());
|
| - expected_output->f_int32 = 123;
|
| - expected_output->f_rect = MakeRect(5);
|
| + MultiVersionStructV1Ptr expected_output(
|
| + MultiVersionStructV1::New(123, MakeRect(5)));
|
|
|
| MultiVersionStructV1Ptr output =
|
| SerializeAndDeserialize<MultiVersionStructV1Ptr>(std::move(input));
|
| @@ -411,8 +348,7 @@ TEST_F(StructTest, Versioning_NewToOld) {
|
|
|
| {
|
| MultiVersionStructPtr input = MakeMultiVersionStruct();
|
| - MultiVersionStructV0Ptr expected_output(MultiVersionStructV0::New());
|
| - expected_output->f_int32 = 123;
|
| + MultiVersionStructV0Ptr expected_output(MultiVersionStructV0::New(123));
|
|
|
| MultiVersionStructV0Ptr output =
|
| SerializeAndDeserialize<MultiVersionStructV0Ptr>(std::move(input));
|
| @@ -527,11 +463,11 @@ TEST_F(StructTest, Serialization_PublicAPI) {
|
|
|
| {
|
| // A struct containing other objects.
|
| - NamedRegionPtr region(NamedRegion::New());
|
| - region->name.emplace("region");
|
| - region->rects.emplace(3);
|
| - for (size_t i = 0; i < region->rects->size(); ++i)
|
| - (*region->rects)[i] = MakeRect(static_cast<int32_t>(i) + 1);
|
| + std::vector<RectPtr> rects;
|
| + for (size_t i = 0; i < 3; ++i)
|
| + rects.push_back(MakeRect(static_cast<int32_t>(i) + 1));
|
| + NamedRegionPtr region(
|
| + NamedRegion::New(std::string("region"), std::move(rects)));
|
|
|
| NamedRegionPtr cloned_region = region.Clone();
|
| auto data = NamedRegion::Serialize(®ion);
|
| @@ -553,5 +489,27 @@ TEST_F(StructTest, Serialization_PublicAPI) {
|
| }
|
| }
|
|
|
| +TEST_F(StructTest, VersionedStructConstructor) {
|
| + auto reordered = ReorderedStruct::New(123, 456, 789);
|
| + EXPECT_EQ(123, reordered->a);
|
| + EXPECT_EQ(456, reordered->b);
|
| + EXPECT_EQ(789, reordered->c);
|
| +
|
| + reordered = ReorderedStruct::New(123, 456);
|
| + EXPECT_EQ(123, reordered->a);
|
| + EXPECT_EQ(6, reordered->b);
|
| + EXPECT_EQ(456, reordered->c);
|
| +
|
| + reordered = ReorderedStruct::New(123);
|
| + EXPECT_EQ(3, reordered->a);
|
| + EXPECT_EQ(6, reordered->b);
|
| + EXPECT_EQ(123, reordered->c);
|
| +
|
| + reordered = ReorderedStruct::New();
|
| + EXPECT_EQ(3, reordered->a);
|
| + EXPECT_EQ(6, reordered->b);
|
| + EXPECT_EQ(1, reordered->c);
|
| +}
|
| +
|
| } // namespace test
|
| } // namespace mojo
|
|
|