]> git.phdru.name Git - phdru.name/cgi-bin/blog-ru/search-tags.git/blobdiff - parser/test_parser.py
Use grako instead of PLY to compile EBNF to Python
[phdru.name/cgi-bin/blog-ru/search-tags.git] / parser / test_parser.py
index 4f2e1767f6d14b16e59c4d5c1a25c9de335f6269..046c31c056b0f1bd7d11184597c8e64e55121f46 100755 (executable)
@@ -1,21 +1,25 @@
 #! /usr/bin/env python
 
+
 import unittest
+from grako.exceptions import FailedParse
+
 
 class TestParser(unittest.TestCase):
     def test_01_import(self):
-        global parser
-        from parser import parser
+        global parser, TagsSemantics
+        from parser import TagsParser
+        from build_ast import TagsSemantics
+        parser = TagsParser(parseinfo=False)
 
     def _parse(self, input):
-        return parser.parse(input)
+        return parser.parse(input, semantics=TagsSemantics())
 
     def test_02_tag(self):
         self.assertEqual(self._parse('xxx'), ('NAME', 'xxx'))
 
     def test_03_bad_tag(self):
-        from ply.lex import LexError
-        self.assertRaises(LexError, self._parse, 'XXX')
+        self.assertRaises(FailedParse, self._parse, 'XXX')
 
     def test_04_expression(self):
         self.assertEqual(self._parse('!(xxx&yyy)'),
@@ -50,7 +54,7 @@ class TestParser(unittest.TestCase):
         )
 
     def test_05_bad_expression(self):
-        self.assertIs(self._parse('!(xxx&yyy'), None)
+        self.assertRaises(FailedParse, self._parse, '!(xxx&yyy')
 
 if __name__ == "__main__":
     unittest.main()