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

Side by Side Diff: mojo/public/tools/bindings/pylib/mojom_tests/parse/parser_unittest.py

Issue 396783002: Mojo: Mojom: Add AST types for methods, interface bodies, and interfaces. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « mojo/public/tools/bindings/pylib/mojom/parse/translate.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import imp 5 import imp
6 import os.path 6 import os.path
7 import sys 7 import sys
8 import unittest 8 import unittest
9 9
10 # Disable lint check for finding modules: 10 # Disable lint check for finding modules:
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 r" *int32\[abcdefg\] not_a_number;"): 619 r" *int32\[abcdefg\] not_a_number;"):
620 parser.Parse(source3, "my_file.mojom") 620 parser.Parse(source3, "my_file.mojom")
621 621
622 def testValidMethod(self): 622 def testValidMethod(self):
623 """Tests parsing method declarations.""" 623 """Tests parsing method declarations."""
624 624
625 source1 = "interface MyInterface { MyMethod(int32 a); };" 625 source1 = "interface MyInterface { MyMethod(int32 a); };"
626 expected1 = ast.Mojom( 626 expected1 = ast.Mojom(
627 None, 627 None,
628 ast.ImportList(), 628 ast.ImportList(),
629 [('INTERFACE', 629 [ast.Interface(
630 'MyInterface', 630 'MyInterface',
631 None,
632 [('METHOD',
633 'MyMethod',
634 ast.ParameterList(ast.Parameter('a', None, 'int32')),
635 None, 631 None,
636 None)])]) 632 ast.InterfaceBody(
633 ast.Method(
634 'MyMethod',
635 None,
636 ast.ParameterList(ast.Parameter('a', None, 'int32')),
637 None)))])
637 self.assertEquals(parser.Parse(source1, "my_file.mojom"), expected1) 638 self.assertEquals(parser.Parse(source1, "my_file.mojom"), expected1)
638 639
639 source2 = """\ 640 source2 = """\
640 interface MyInterface { 641 interface MyInterface {
641 MyMethod1@0(int32 a@0, int64 b@1); 642 MyMethod1@0(int32 a@0, int64 b@1);
642 MyMethod2@1() => (); 643 MyMethod2@1() => ();
643 }; 644 };
644 """ 645 """
645 expected2 = ast.Mojom( 646 expected2 = ast.Mojom(
646 None, 647 None,
647 ast.ImportList(), 648 ast.ImportList(),
648 [('INTERFACE', 649 [ast.Interface(
649 'MyInterface', 650 'MyInterface',
650 None, 651 None,
651 [('METHOD', 652 ast.InterfaceBody([
652 'MyMethod1', 653 ast.Method(
653 ast.ParameterList([ast.Parameter('a', ast.Ordinal(0), 'int32'), 654 'MyMethod1',
654 ast.Parameter('b', ast.Ordinal(1), 'int64')]), 655 ast.Ordinal(0),
655 ast.Ordinal(0), 656 ast.ParameterList([ast.Parameter('a', ast.Ordinal(0),
656 None), 657 'int32'),
657 ('METHOD', 658 ast.Parameter('b', ast.Ordinal(1),
658 'MyMethod2', 659 'int64')]),
659 ast.ParameterList(), 660 None),
660 ast.Ordinal(1), 661 ast.Method(
661 ast.ParameterList())])]) 662 'MyMethod2',
663 ast.Ordinal(1),
664 ast.ParameterList(),
665 ast.ParameterList())]))])
662 self.assertEquals(parser.Parse(source2, "my_file.mojom"), expected2) 666 self.assertEquals(parser.Parse(source2, "my_file.mojom"), expected2)
663 667
664 source3 = """\ 668 source3 = """\
665 interface MyInterface { 669 interface MyInterface {
666 MyMethod(string a) => (int32 a, bool b); 670 MyMethod(string a) => (int32 a, bool b);
667 }; 671 };
668 """ 672 """
669 expected3 = ast.Mojom( 673 expected3 = ast.Mojom(
670 None, 674 None,
671 ast.ImportList(), 675 ast.ImportList(),
672 [('INTERFACE', 676 [ast.Interface(
673 'MyInterface', 677 'MyInterface',
674 None,
675 [('METHOD',
676 'MyMethod',
677 ast.ParameterList(ast.Parameter('a', None, 'string')),
678 None, 678 None,
679 ast.ParameterList([ast.Parameter('a', None, 'int32'), 679 ast.InterfaceBody(
680 ast.Parameter('b', None, 'bool')]))])]) 680 ast.Method(
681 'MyMethod',
682 None,
683 ast.ParameterList(ast.Parameter('a', None, 'string')),
684 ast.ParameterList([ast.Parameter('a', None, 'int32'),
685 ast.Parameter('b', None, 'bool')]))))])
681 self.assertEquals(parser.Parse(source3, "my_file.mojom"), expected3) 686 self.assertEquals(parser.Parse(source3, "my_file.mojom"), expected3)
682 687
683 def testInvalidMethods(self): 688 def testInvalidMethods(self):
684 """Tests that invalid method declarations are correctly detected.""" 689 """Tests that invalid method declarations are correctly detected."""
685 690
686 # No trailing commas. 691 # No trailing commas.
687 source1 = """\ 692 source1 = """\
688 interface MyInterface { 693 interface MyInterface {
689 MyMethod(string a,); 694 MyMethod(string a,);
690 }; 695 };
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 """ 833 """
829 with self.assertRaisesRegexp( 834 with self.assertRaisesRegexp(
830 parser.ParseError, 835 parser.ParseError,
831 r"^my_file\.mojom:2: Error: Unexpected 'module':\n" 836 r"^my_file\.mojom:2: Error: Unexpected 'module':\n"
832 r" *module {}$"): 837 r" *module {}$"):
833 parser.Parse(source2, "my_file.mojom") 838 parser.Parse(source2, "my_file.mojom")
834 839
835 840
836 if __name__ == "__main__": 841 if __name__ == "__main__":
837 unittest.main() 842 unittest.main()
OLDNEW
« no previous file with comments | « mojo/public/tools/bindings/pylib/mojom/parse/translate.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698