Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(876)

Unified Diff: mojo/public/cpp/bindings/tests/struct_unittest.cc

Issue 2689513003: Add field-initializing constructors to generated mojo structs. (Closed)
Patch Set: rebase Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(&region);
@@ -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

Powered by Google App Engine
This is Rietveld 408576698