Chromium Code Reviews| 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..0381b1fb024996f446356bd537840d9bed2e52b8 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->f_int64); |
| + EXPECT_EQ(456U, reordered->f_uint32); |
| + EXPECT_EQ(789, reordered->f_int32); |
| + |
| + reordered = ReorderedStruct::New(123, 456); |
| + EXPECT_EQ(6U, reordered->f_uint32); |
|
yzshen1
2017/02/21 16:38:33
nit: The test is a little hard to read: the EXPECT
Sam McNally
2017/02/21 23:13:09
Done.
|
| + EXPECT_EQ(123, reordered->f_int64); |
| + EXPECT_EQ(456, reordered->f_int32); |
| + |
| + reordered = ReorderedStruct::New(123); |
| + EXPECT_EQ(3, reordered->f_int64); |
| + EXPECT_EQ(123, reordered->f_int32); |
| + EXPECT_EQ(6U, reordered->f_uint32); |
| + |
| + reordered = ReorderedStruct::New(); |
| + EXPECT_EQ(3, reordered->f_int64); |
| + EXPECT_EQ(1, reordered->f_int32); |
| + EXPECT_EQ(6U, reordered->f_uint32); |
| +} |
| + |
| } // namespace test |
| } // namespace mojo |