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

Unified Diff: mojom/mojom_parser/serialization/serialization_test.go

Issue 1823563002: Mojom frontend: Implement computeFieldOffsets(). (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 9 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: mojom/mojom_parser/serialization/serialization_test.go
diff --git a/mojom/mojom_parser/serialization/serialization_test.go b/mojom/mojom_parser/serialization/serialization_test.go
index 7e81c322ba67839dbd9295642d90e4ded964609f..b08512645a43ec27df127a08c6ef8cea8c173800 100644
--- a/mojom/mojom_parser/serialization/serialization_test.go
+++ b/mojom/mojom_parser/serialization/serialization_test.go
@@ -1186,40 +1186,44 @@ func TestWithComputedData(t *testing.T) {
{
DeclData: test.newShortDeclDataO(0, -1, "x"),
Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32},
+ Offset: 0,
},
// field y
{
DeclData: test.newShortDeclDataO(1, -1, "y"),
Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32},
+ Offset: 4,
},
// field z
{
DeclData: test.newShortDeclDataAO(2, -1, "z", &[]mojom_types.Attribute{{"MinVersion", &mojom_types.LiteralValueInt8Value{1}}}),
Type: &mojom_types.TypeArrayType{mojom_types.ArrayType{true, -1, &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32}}},
MinVersion: 1,
+ Offset: 8,
},
// field w
{
DeclData: test.newShortDeclDataAO(3, -1, "w", &[]mojom_types.Attribute{{"MinVersion", &mojom_types.LiteralValueInt8Value{2}}}),
Type: &mojom_types.TypeArrayType{mojom_types.ArrayType{true, -1, &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32}}},
MinVersion: 2,
+ Offset: 16,
},
},
VersionInfo: &[]mojom_types.StructVersion{
mojom_types.StructVersion{
VersionNumber: 0,
NumFields: 2,
- NumBytes: 0,
+ NumBytes: 16,
},
mojom_types.StructVersion{
VersionNumber: 1,
NumFields: 3,
- NumBytes: 0,
+ NumBytes: 24,
},
mojom_types.StructVersion{
VersionNumber: 2,
NumFields: 4,
- NumBytes: 0,
+ NumBytes: 32,
},
},
}}
@@ -1259,40 +1263,44 @@ func TestWithComputedData(t *testing.T) {
{
DeclData: test.newShortDeclDataO(0, -1, "x"),
Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32},
+ Offset: 0,
},
// field y
{
DeclData: test.newShortDeclDataO(1, -1, "y"),
Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32},
+ Offset: 4,
},
// field z
{
DeclData: test.newShortDeclDataAO(2, -1, "z", &[]mojom_types.Attribute{{"MinVersion", &mojom_types.LiteralValueInt8Value{1}}}),
Type: &mojom_types.TypeArrayType{mojom_types.ArrayType{true, -1, &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32}}},
MinVersion: 1,
+ Offset: 8,
},
// field w
{
DeclData: test.newShortDeclDataAO(3, -1, "w", &[]mojom_types.Attribute{{"MinVersion", &mojom_types.LiteralValueInt8Value{3}}}),
Type: &mojom_types.TypeArrayType{mojom_types.ArrayType{true, -1, &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32}}},
MinVersion: 3,
+ Offset: 16,
},
},
VersionInfo: &[]mojom_types.StructVersion{
mojom_types.StructVersion{
VersionNumber: 0,
NumFields: 2,
- NumBytes: 0,
+ NumBytes: 16,
},
mojom_types.StructVersion{
VersionNumber: 1,
NumFields: 3,
- NumBytes: 0,
+ NumBytes: 24,
},
mojom_types.StructVersion{
VersionNumber: 3,
NumFields: 4,
- NumBytes: 0,
+ NumBytes: 32,
},
},
}}
@@ -1332,35 +1340,39 @@ func TestWithComputedData(t *testing.T) {
{
DeclData: test.newShortDeclDataO(0, -1, "x"),
Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32},
+ Offset: 0,
},
// field y
{
DeclData: test.newShortDeclDataO(1, -1, "y"),
Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32},
+ Offset: 4,
},
// field z
{
DeclData: test.newShortDeclDataAO(2, -1, "z", &[]mojom_types.Attribute{{"MinVersion", &mojom_types.LiteralValueInt8Value{1}}}),
Type: &mojom_types.TypeArrayType{mojom_types.ArrayType{true, -1, &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32}}},
MinVersion: 1,
+ Offset: 8,
},
// field w
{
DeclData: test.newShortDeclDataAO(3, -1, "w", &[]mojom_types.Attribute{{"MinVersion", &mojom_types.LiteralValueInt8Value{1}}}),
Type: &mojom_types.TypeArrayType{mojom_types.ArrayType{true, -1, &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32}}},
MinVersion: 1,
+ Offset: 16,
},
},
VersionInfo: &[]mojom_types.StructVersion{
mojom_types.StructVersion{
VersionNumber: 0,
NumFields: 2,
- NumBytes: 0,
+ NumBytes: 16,
},
mojom_types.StructVersion{
VersionNumber: 1,
NumFields: 4,
- NumBytes: 0,
+ NumBytes: 32,
},
},
}}
@@ -1401,40 +1413,183 @@ func TestWithComputedData(t *testing.T) {
{
DeclData: test.newShortDeclDataO(3, 0, "x"),
Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32},
+ Offset: 0,
},
// field y
{
DeclData: test.newShortDeclDataO(0, 1, "y"),
Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32},
+ Offset: 4,
},
// field z
{
DeclData: test.newShortDeclDataAO(1, 2, "z", &[]mojom_types.Attribute{{"MinVersion", &mojom_types.LiteralValueInt8Value{1}}}),
Type: &mojom_types.TypeArrayType{mojom_types.ArrayType{true, -1, &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32}}},
MinVersion: 1,
+ Offset: 8,
},
// field w
{
DeclData: test.newShortDeclDataAO(2, 3, "w", &[]mojom_types.Attribute{{"MinVersion", &mojom_types.LiteralValueInt8Value{2}}}),
Type: &mojom_types.TypeArrayType{mojom_types.ArrayType{true, -1, &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32}}},
MinVersion: 2,
+ Offset: 16,
},
},
VersionInfo: &[]mojom_types.StructVersion{
mojom_types.StructVersion{
VersionNumber: 0,
NumFields: 2,
- NumBytes: 0,
+ NumBytes: 16,
},
mojom_types.StructVersion{
VersionNumber: 1,
NumFields: 3,
- NumBytes: 0,
+ NumBytes: 24,
},
mojom_types.StructVersion{
VersionNumber: 2,
NumFields: 4,
- NumBytes: 0,
+ NumBytes: 32,
+ },
+ },
+ }}
+
+ test.endTestCase()
+ }
+
+ ////////////////////////////////////////////////////////////
+ // Test Case: 3 boolean fields
+ ////////////////////////////////////////////////////////////
+ {
+ contents := `
+ struct MyStruct1 {
+ bool b1;
+ bool b2;
+ bool b3;
+ };`
+
+ test.addTestCase("", contents)
+
+ test.expectedFile().DeclaredMojomObjects.Structs = &[]string{"TYPE_KEY:MyStruct1"}
+
+ // ResolvedTypes
+
+ // struct Foo
+ test.expectedGraph().ResolvedTypes["TYPE_KEY:MyStruct1"] = &mojom_types.UserDefinedTypeStructType{mojom_types.MojomStruct{
+ DeclData: test.newDeclData("MyStruct1", "MyStruct1"),
+ Fields: []mojom_types.StructField{
+ // The fields are in ordinal order and the first two arguments to newShortDeclDataO() are
+ // declarationOrder and declaredOrdinal.
+ // field b1
+ {
+ DeclData: test.newShortDeclDataO(0, -1, "b1"),
+ Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Bool},
+ Offset: 0,
+ Bit: 0,
+ },
+ // field b2
+ {
+ DeclData: test.newShortDeclDataO(1, -1, "b2"),
+ Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Bool},
+ Offset: 0,
+ Bit: 1,
+ },
+ // field b3
+ {
+ DeclData: test.newShortDeclDataO(2, -1, "b3"),
+ Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Bool},
+ Offset: 0,
+ Bit: 2,
+ },
+ },
+ VersionInfo: &[]mojom_types.StructVersion{
+ mojom_types.StructVersion{
+ VersionNumber: 0,
+ NumFields: 3,
+ NumBytes: 16,
+ },
+ },
+ }}
+
+ test.endTestCase()
+ }
+
+ ////////////////////////////////////////////////////////////
+ // Test Case: int8 field + 2 boolean fields + int32field + 2 boolean fields
+ ////////////////////////////////////////////////////////////
+ {
+ contents := `
+ struct MyStruct1 {
+ int8 x;
+
+ bool b1;
+ bool b2;
+
+ int32 y;
+
+ bool b3;
+ bool b4;
+ };`
+
+ test.addTestCase("", contents)
+
+ test.expectedFile().DeclaredMojomObjects.Structs = &[]string{"TYPE_KEY:MyStruct1"}
+
+ // ResolvedTypes
+
+ // struct Foo
+ test.expectedGraph().ResolvedTypes["TYPE_KEY:MyStruct1"] = &mojom_types.UserDefinedTypeStructType{mojom_types.MojomStruct{
+ DeclData: test.newDeclData("MyStruct1", "MyStruct1"),
+ Fields: []mojom_types.StructField{
+ // The fields are in ordinal order and the first two arguments to newShortDeclDataO() are
+ // declarationOrder and declaredOrdinal.
+ // field x
+ {
+ DeclData: test.newShortDeclDataO(0, -1, "x"),
+ Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int8},
+ Offset: 0,
+ },
+ // field b1
+ {
+ DeclData: test.newShortDeclDataO(1, -1, "b1"),
+ Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Bool},
+ Offset: 1,
+ Bit: 0,
+ },
+ // field b2
+ {
+ DeclData: test.newShortDeclDataO(2, -1, "b2"),
+ Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Bool},
+ Offset: 1,
+ Bit: 1,
+ },
+ // field y
+ {
+ DeclData: test.newShortDeclDataO(3, -1, "y"),
+ Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Int32},
+ Offset: 4,
+ },
+ // field b3
+ {
+ DeclData: test.newShortDeclDataO(4, -1, "b3"),
+ Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Bool},
+ Offset: 1,
+ Bit: 2,
+ },
+ // field b4
+ {
+ DeclData: test.newShortDeclDataO(5, -1, "b4"),
+ Type: &mojom_types.TypeSimpleType{mojom_types.SimpleType_Bool},
+ Offset: 1,
+ Bit: 3,
+ },
+ },
+ VersionInfo: &[]mojom_types.StructVersion{
+ mojom_types.StructVersion{
+ VersionNumber: 0,
+ NumFields: 6,
+ NumBytes: 16,
},
},
}}

Powered by Google App Engine
This is Rietveld 408576698