| Index: mojo/public/tools/bindings/pylib/mojom_tests/parse/parser_unittest.py
|
| diff --git a/mojo/public/tools/bindings/pylib/mojom_tests/parse/parser_unittest.py b/mojo/public/tools/bindings/pylib/mojom_tests/parse/parser_unittest.py
|
| index c278096f1700b62d93ed5a68e6ad42c76998ac44..0ce7fec46887fda5ebad876f1e056375656b1563 100644
|
| --- a/mojo/public/tools/bindings/pylib/mojom_tests/parse/parser_unittest.py
|
| +++ b/mojo/public/tools/bindings/pylib/mojom_tests/parse/parser_unittest.py
|
| @@ -148,11 +148,12 @@ class ParserTest(unittest.TestCase):
|
| expected = ast.Mojom(
|
| ast.Module(('IDENTIFIER', 'my_module'), None),
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - None,
|
| - [ast.StructField('a', None, 'int32', None),
|
| - ast.StructField('b', None, 'double', None)])])
|
| + [ast.Struct(
|
| + 'MyStruct',
|
| + None,
|
| + ast.StructBody(
|
| + [ast.StructField('a', None, 'int32', None),
|
| + ast.StructField('b', None, 'double', None)]))])
|
| self.assertEquals(parser.Parse(source, "my_file.mojom"), expected)
|
|
|
| def testSimpleStructWithoutModule(self):
|
| @@ -167,11 +168,12 @@ class ParserTest(unittest.TestCase):
|
| expected = ast.Mojom(
|
| None,
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - None,
|
| - [ast.StructField('a', None, 'int32', None),
|
| - ast.StructField('b', None, 'double', None)])])
|
| + [ast.Struct(
|
| + 'MyStruct',
|
| + None,
|
| + ast.StructBody(
|
| + [ast.StructField('a', None, 'int32', None),
|
| + ast.StructField('b', None, 'double', None)]))])
|
| self.assertEquals(parser.Parse(source, "my_file.mojom"), expected)
|
|
|
| def testMissingModuleName(self):
|
| @@ -286,11 +288,12 @@ class ParserTest(unittest.TestCase):
|
| expected = ast.Mojom(
|
| ast.Module(('IDENTIFIER', 'my_module'), None),
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct', None,
|
| - [ast.Const('kNumber', 'int8', '-1'),
|
| - ast.StructField('number', ast.Ordinal(0), 'int8',
|
| - ('IDENTIFIER', 'kNumber'))])])
|
| + [ast.Struct(
|
| + 'MyStruct', None,
|
| + ast.StructBody(
|
| + [ast.Const('kNumber', 'int8', '-1'),
|
| + ast.StructField('number', ast.Ordinal(0), 'int8',
|
| + ('IDENTIFIER', 'kNumber'))]))])
|
| self.assertEquals(parser.Parse(source, "my_file.mojom"), expected)
|
|
|
| def testNoConditionals(self):
|
| @@ -334,18 +337,19 @@ class ParserTest(unittest.TestCase):
|
| expected = ast.Mojom(
|
| ast.Module(('IDENTIFIER', 'my_module'), None),
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - None,
|
| - [ast.StructField('a0', ast.Ordinal(0), 'int32', None),
|
| - ast.StructField('a1', ast.Ordinal(1), 'int32', None),
|
| - ast.StructField('a2', ast.Ordinal(2), 'int32', None),
|
| - ast.StructField('a9', ast.Ordinal(9), 'int32', None),
|
| - ast.StructField('a10', ast.Ordinal(10), 'int32', None),
|
| - ast.StructField('a11', ast.Ordinal(11), 'int32', None),
|
| - ast.StructField('a29', ast.Ordinal(29), 'int32', None),
|
| - ast.StructField('a1234567890', ast.Ordinal(1234567890), 'int32',
|
| - None)])])
|
| + [ast.Struct(
|
| + 'MyStruct',
|
| + None,
|
| + ast.StructBody(
|
| + [ast.StructField('a0', ast.Ordinal(0), 'int32', None),
|
| + ast.StructField('a1', ast.Ordinal(1), 'int32', None),
|
| + ast.StructField('a2', ast.Ordinal(2), 'int32', None),
|
| + ast.StructField('a9', ast.Ordinal(9), 'int32', None),
|
| + ast.StructField('a10', ast.Ordinal(10), 'int32', None),
|
| + ast.StructField('a11', ast.Ordinal(11), 'int32', None),
|
| + ast.StructField('a29', ast.Ordinal(29), 'int32', None),
|
| + ast.StructField('a1234567890', ast.Ordinal(1234567890),
|
| + 'int32', None)]))])
|
| self.assertEquals(parser.Parse(source, "my_file.mojom"), expected)
|
|
|
| def testInvalidOrdinals(self):
|
| @@ -430,10 +434,10 @@ class ParserTest(unittest.TestCase):
|
| expected = ast.Mojom(
|
| ast.Module(('IDENTIFIER', 'my.mod'), None),
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - None,
|
| - [ast.StructField('a', None, 'int32', None)])])
|
| + [ast.Struct(
|
| + 'MyStruct',
|
| + None,
|
| + ast.StructBody(ast.StructField('a', None, 'int32', None)))])
|
| self.assertEquals(parser.Parse(source, "my_file.mojom"), expected)
|
|
|
| def testValidHandleTypes(self):
|
| @@ -453,14 +457,15 @@ class ParserTest(unittest.TestCase):
|
| expected = ast.Mojom(
|
| None,
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - None,
|
| - [ast.StructField('a', None, 'handle', None),
|
| - ast.StructField('b', None, 'handle<data_pipe_consumer>', None),
|
| - ast.StructField('c', None, 'handle<data_pipe_producer>', None),
|
| - ast.StructField('d', None, 'handle<message_pipe>', None),
|
| - ast.StructField('e', None, 'handle<shared_buffer>', None)])])
|
| + [ast.Struct(
|
| + 'MyStruct',
|
| + None,
|
| + ast.StructBody(
|
| + [ast.StructField('a', None, 'handle', None),
|
| + ast.StructField('b', None, 'handle<data_pipe_consumer>', None),
|
| + ast.StructField('c', None, 'handle<data_pipe_producer>', None),
|
| + ast.StructField('d', None, 'handle<message_pipe>', None),
|
| + ast.StructField('e', None, 'handle<shared_buffer>', None)]))])
|
| self.assertEquals(parser.Parse(source, "my_file.mojom"), expected)
|
|
|
| def testInvalidHandleType(self):
|
| @@ -511,32 +516,33 @@ class ParserTest(unittest.TestCase):
|
| expected = ast.Mojom(
|
| None,
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - None,
|
| - [ast.StructField('a0', None, 'int16', '0'),
|
| - ast.StructField('a1', None, 'uint16', '0x0'),
|
| - ast.StructField('a2', None, 'uint16', '0x00'),
|
| - ast.StructField('a3', None, 'uint16', '0x01'),
|
| - ast.StructField('a4', None, 'uint16', '0xcd'),
|
| - ast.StructField('a5' , None, 'int32', '12345'),
|
| - ast.StructField('a6', None, 'int64', '-12345'),
|
| - ast.StructField('a7', None, 'int64', '+12345'),
|
| - ast.StructField('a8', None, 'uint32', '0x12cd3'),
|
| - ast.StructField('a9', None, 'uint32', '-0x12cD3'),
|
| - ast.StructField('a10', None, 'uint32', '+0x12CD3'),
|
| - ast.StructField('a11', None, 'bool', 'true'),
|
| - ast.StructField('a12', None, 'bool', 'false'),
|
| - ast.StructField('a13', None, 'float', '1.2345'),
|
| - ast.StructField('a14', None, 'float', '-1.2345'),
|
| - ast.StructField('a15', None, 'float', '+1.2345'),
|
| - ast.StructField('a16', None, 'float', '123.'),
|
| - ast.StructField('a17', None, 'float', '.123'),
|
| - ast.StructField('a18', None, 'double', '1.23E10'),
|
| - ast.StructField('a19', None, 'double', '1.E-10'),
|
| - ast.StructField('a20', None, 'double', '.5E+10'),
|
| - ast.StructField('a21', None, 'double', '-1.23E10'),
|
| - ast.StructField('a22', None, 'double', '+.123E10')])])
|
| + [ast.Struct(
|
| + 'MyStruct',
|
| + None,
|
| + ast.StructBody(
|
| + [ast.StructField('a0', None, 'int16', '0'),
|
| + ast.StructField('a1', None, 'uint16', '0x0'),
|
| + ast.StructField('a2', None, 'uint16', '0x00'),
|
| + ast.StructField('a3', None, 'uint16', '0x01'),
|
| + ast.StructField('a4', None, 'uint16', '0xcd'),
|
| + ast.StructField('a5' , None, 'int32', '12345'),
|
| + ast.StructField('a6', None, 'int64', '-12345'),
|
| + ast.StructField('a7', None, 'int64', '+12345'),
|
| + ast.StructField('a8', None, 'uint32', '0x12cd3'),
|
| + ast.StructField('a9', None, 'uint32', '-0x12cD3'),
|
| + ast.StructField('a10', None, 'uint32', '+0x12CD3'),
|
| + ast.StructField('a11', None, 'bool', 'true'),
|
| + ast.StructField('a12', None, 'bool', 'false'),
|
| + ast.StructField('a13', None, 'float', '1.2345'),
|
| + ast.StructField('a14', None, 'float', '-1.2345'),
|
| + ast.StructField('a15', None, 'float', '+1.2345'),
|
| + ast.StructField('a16', None, 'float', '123.'),
|
| + ast.StructField('a17', None, 'float', '.123'),
|
| + ast.StructField('a18', None, 'double', '1.23E10'),
|
| + ast.StructField('a19', None, 'double', '1.E-10'),
|
| + ast.StructField('a20', None, 'double', '.5E+10'),
|
| + ast.StructField('a21', None, 'double', '-1.23E10'),
|
| + ast.StructField('a22', None, 'double', '+.123E10')]))])
|
| self.assertEquals(parser.Parse(source, "my_file.mojom"), expected)
|
|
|
| def testValidFixedSizeArray(self):
|
| @@ -552,14 +558,15 @@ class ParserTest(unittest.TestCase):
|
| expected = ast.Mojom(
|
| None,
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - None,
|
| - [ast.StructField('normal_array', None, 'int32[]', None),
|
| - ast.StructField('fixed_size_array_one_entry', None, 'int32[1]',
|
| - None),
|
| - ast.StructField('fixed_size_array_ten_entries', None, 'int32[10]',
|
| - None)])])
|
| + [ast.Struct(
|
| + 'MyStruct',
|
| + None,
|
| + ast.StructBody(
|
| + [ast.StructField('normal_array', None, 'int32[]', None),
|
| + ast.StructField('fixed_size_array_one_entry', None, 'int32[1]',
|
| + None),
|
| + ast.StructField('fixed_size_array_ten_entries', None,
|
| + 'int32[10]', None)]))])
|
| self.assertEquals(parser.Parse(source, "my_file.mojom"), expected)
|
|
|
| def testValidNestedArray(self):
|
| @@ -569,10 +576,11 @@ class ParserTest(unittest.TestCase):
|
| expected = ast.Mojom(
|
| None,
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - None,
|
| - [ast.StructField('nested_array', None, 'int32[][]', None)])])
|
| + [ast.Struct(
|
| + 'MyStruct',
|
| + None,
|
| + ast.StructBody(
|
| + ast.StructField('nested_array', None, 'int32[][]', None)))])
|
| self.assertEquals(parser.Parse(source, "my_file.mojom"), expected)
|
|
|
| def testInvalidFixedArraySize(self):
|
| @@ -709,10 +717,7 @@ class ParserTest(unittest.TestCase):
|
| expected1 = ast.Mojom(
|
| None,
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - ast.AttributeList(),
|
| - None)])
|
| + [ast.Struct('MyStruct', ast.AttributeList(), ast.StructBody())])
|
| self.assertEquals(parser.Parse(source1, "my_file.mojom"), expected1)
|
|
|
| # One-element attribute list, with name value.
|
| @@ -720,10 +725,10 @@ class ParserTest(unittest.TestCase):
|
| expected2 = ast.Mojom(
|
| None,
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - ast.AttributeList(ast.Attribute("MyAttribute", "MyName")),
|
| - None)])
|
| + [ast.Struct(
|
| + 'MyStruct',
|
| + ast.AttributeList(ast.Attribute("MyAttribute", "MyName")),
|
| + ast.StructBody())])
|
| self.assertEquals(parser.Parse(source2, "my_file.mojom"), expected2)
|
|
|
| # Two-element attribute list, with one string value and one integer value.
|
| @@ -731,11 +736,11 @@ class ParserTest(unittest.TestCase):
|
| expected3 = ast.Mojom(
|
| None,
|
| ast.ImportList(),
|
| - [('STRUCT',
|
| - 'MyStruct',
|
| - ast.AttributeList([ast.Attribute("MyAttribute1", "hello"),
|
| - ast.Attribute("MyAttribute2", 5)]),
|
| - None)])
|
| + [ast.Struct(
|
| + 'MyStruct',
|
| + ast.AttributeList([ast.Attribute("MyAttribute1", "hello"),
|
| + ast.Attribute("MyAttribute2", 5)]),
|
| + ast.StructBody())])
|
| self.assertEquals(parser.Parse(source3, "my_file.mojom"), expected3)
|
|
|
| # TODO(vtl): Boolean attributes don't work yet. (In fact, we just |eval()|
|
|
|