| OLD | NEW |
| 1 # Copyright 2013 the V8 project authors. All rights reserved. | 1 # Copyright 2013 the V8 project authors. All rights reserved. |
| 2 # Redistribution and use in source and binary forms, with or without | 2 # Redistribution and use in source and binary forms, with or without |
| 3 # modification, are permitted provided that the following conditions are | 3 # modification, are permitted provided that the following conditions are |
| 4 # met: | 4 # met: |
| 5 # | 5 # |
| 6 # * Redistributions of source code must retain the above copyright | 6 # * Redistributions of source code must retain the above copyright |
| 7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
| 8 # * Redistributions in binary form must reproduce the above | 8 # * Redistributions in binary form must reproduce the above |
| 9 # copyright notice, this list of conditions and the following | 9 # copyright notice, this list of conditions and the following |
| 10 # disclaimer in the documentation and/or other materials provided | 10 # disclaimer in the documentation and/or other materials provided |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 self.state = RuleParserState(KeyEncoding.get('latin1')) | 36 self.state = RuleParserState(KeyEncoding.get('latin1')) |
| 37 | 37 |
| 38 def parse(self, string): | 38 def parse(self, string): |
| 39 return self.state.parse(string) | 39 return self.state.parse(string) |
| 40 | 40 |
| 41 def test_basic(self): | 41 def test_basic(self): |
| 42 self.parse(''' | 42 self.parse(''' |
| 43 alias = /regex/; | 43 alias = /regex/; |
| 44 <<cond1>> /regex/ <||cond2> | 44 <<cond1>> /regex/ <||cond2> |
| 45 <<cond1>> alias <||cond2> | 45 <<cond1>> alias <||cond2> |
| 46 <<cond2>> /regex/ <|{body}|> | 46 <<cond2>> /regex/ <|body|> |
| 47 <<cond2>> alias <|{body}|> | 47 <<cond2>> alias <|body|> |
| 48 <<cond3>> /regex/ <{body}||> | 48 <<cond3>> /regex/ <body||> |
| 49 <<cond3>> alias <{body}||>''') | 49 <<cond3>> alias <body||>''') |
| 50 | 50 |
| 51 self.assertTrue(len(self.state.aliases), 1) | 51 self.assertTrue(len(self.state.aliases), 1) |
| 52 self.assertTrue('alias' in self.state.aliases) | 52 self.assertTrue('alias' in self.state.aliases) |
| 53 self.assertEquals(self.state.aliases['alias'], RegexParser.parse('regex')) | 53 self.assertEquals(self.state.aliases['alias'], RegexParser.parse('regex')) |
| 54 | 54 |
| 55 self.assertTrue(len(self.state.rules), 2) | 55 self.assertTrue(len(self.state.rules), 2) |
| 56 self.assertTrue('cond1' in self.state.rules) | 56 self.assertTrue('cond1' in self.state.rules) |
| 57 self.assertEquals(len(self.state.rules['cond1']['regex']), 2) | 57 self.assertEquals(len(self.state.rules['cond1']['regex']), 2) |
| 58 # self.assertTrue('regex2' in self.state.rules['cond1']) | 58 # self.assertTrue('regex2' in self.state.rules['cond1']) |
| 59 # self.assertEquals(self.state.rules['cond1']['regex2'], | 59 # self.assertEquals(self.state.rules['cond1']['regex2'], |
| 60 # ('condition', 'cond2')) | 60 # ('condition', 'cond2')) |
| 61 | 61 |
| 62 self.assertTrue('cond2' in self.state.rules) | 62 self.assertTrue('cond2' in self.state.rules) |
| 63 self.assertEquals(len(self.state.rules['cond2']['regex']), 2) | 63 self.assertEquals(len(self.state.rules['cond2']['regex']), 2) |
| 64 # self.assertTrue('regex3' in self.state.rules['cond2']) | 64 # self.assertTrue('regex3' in self.state.rules['cond2']) |
| 65 # self.assertEquals(self.state.rules['cond2']['regex3'], | 65 # self.assertEquals(self.state.rules['cond2']['regex3'], |
| 66 # ('body', 'body')) | 66 # ('body', 'body')) |
| 67 | 67 |
| 68 self.assertTrue('cond3' in self.state.rules) | 68 self.assertTrue('cond3' in self.state.rules) |
| 69 self.assertEquals(len(self.state.rules['cond3']['regex']), 2) | 69 self.assertEquals(len(self.state.rules['cond3']['regex']), 2) |
| 70 # self.assertTrue('regex4' in self.state.rules['cond3']) | 70 # self.assertTrue('regex4' in self.state.rules['cond3']) |
| 71 # self.assertEquals(self.state.rules['cond3']['regex4'], | 71 # self.assertEquals(self.state.rules['cond3']['regex4'], |
| 72 # ('condition_and_body', 'cond4', 'body')) | 72 # ('condition_and_body', 'cond4', 'body')) |
| 73 | 73 |
| 74 def test_more_complicated(self): | 74 def test_more_complicated(self): |
| 75 self.parse(''' | 75 self.parse(''' |
| 76 alias = "regex;with;semicolon"; | 76 alias = "regex;with;semicolon"; |
| 77 <<cond1>> "regex3}with}braces}" <|{body {with} braces }|> | 77 <<cond1>> "regex3}with}braces}" <|body|> |
| 78 <<cond1>> "regex4{with{braces}" <{body {with} braces }||>''') | 78 <<cond1>> "regex4{with{braces}" <body||>''') |
| 79 | 79 |
| 80 self.assertEquals(self.state.aliases['alias'], | 80 self.assertEquals(self.state.aliases['alias'], |
| 81 RegexParser.parse("regex;with;semicolon")) | 81 RegexParser.parse("regex;with;semicolon")) |
| 82 self.assertTrue('cond1' in self.state.rules) | 82 self.assertTrue('cond1' in self.state.rules) |
| 83 self.assertEquals(len(self.state.rules['cond1']['regex']), 2) | 83 self.assertEquals(len(self.state.rules['cond1']['regex']), 2) |
| 84 | 84 |
| 85 # self.assertEquals( | 85 # self.assertEquals( |
| 86 # self.parse['cond1']['regex4{with{braces}'], | 86 # self.parse['cond1']['regex4{with{braces}'], |
| 87 # ('body', 'body {with} braces }')) | 87 # ('body', 'body {with} braces }')) |
| 88 | |
| 89 def test_body_with_if(self): | |
| 90 self.parse('<<cond>> "regex" <|{ if (foo) { bar } }|>') | |
| 91 # self.assertEquals( | |
| 92 # self.parse['cond']['regex'], | |
| 93 # ('body', 'if (foo) { bar }')) | |
| 94 | |
| 95 def test_regexp_with_count(self): | |
| 96 self.parse('<<cond>> /regex{1,3}/ <|{ if (foo) { bar } }|>') | |
| 97 # self.assertEquals( | |
| 98 # self.parse['cond']['regex{1,3}'], | |
| 99 # ('body', 'if (foo) { bar }')) | |
| OLD | NEW |