X-Git-Url: https://git.phdru.name/?p=phdru.name%2Fcgi-bin%2Fblog-ru%2Fsearch-tags.git;a=blobdiff_plain;f=parser%2Ftest_parser.py;fp=parser%2Ftest_parser.py;h=0a30eda4217dd655b99c272b6001151c598fd6e6;hp=029fbd6fe576dd84e126f18739280b8e83b886d0;hb=fcd51c190450165c3315ed7e4f77bc1415db3d48;hpb=8de4e007a7dfd93c4428a50744640f6c3f61e751 diff --git a/parser/test_parser.py b/parser/test_parser.py index 029fbd6..0a30eda 100755 --- a/parser/test_parser.py +++ b/parser/test_parser.py @@ -1,25 +1,18 @@ #! /usr/bin/env python - import unittest -from grako.exceptions import FailedParse - +from parsimonious import ParseError +from parser import compile class TestParser(unittest.TestCase): - def test_01_import(self): - global parser, TagsSemantics - from parser import TagsParser - from build_ast import TagsSemantics - parser = TagsParser(parseinfo=False) - def _parse(self, input): - return parser.parse(input, semantics=TagsSemantics()) + return compile(input) def test_02_tag(self): self.assertEqual(self._parse('xxx'), ('NAME', 'xxx')) def test_03_bad_tag(self): - self.assertRaises(FailedParse, self._parse, 'XXX') + self.assertRaises(ParseError, self._parse, 'XXX') def test_04_expression(self): self.assertEqual(self._parse('!(xxx&yyy)'), @@ -55,9 +48,22 @@ class TestParser(unittest.TestCase): self.assertEqual(self._parse('NOT xxx'), ('NOT', ('NAME', 'xxx')) ) + self.assertEqual(self._parse('NOT (xxx & yyy) AND zzz | ooo'), + ('OR', + ('AND', + ('NOT', + ('PARENS', + ('AND', ('NAME', 'xxx'), ('NAME', 'yyy')) + ) + ), + ('NAME', 'zzz') + ), + ('NAME', 'ooo') + ) + ) def test_05_bad_expression(self): - self.assertRaises(FailedParse, self._parse, '!(xxx&yyy') + self.assertRaises(ParseError, self._parse, '!(xxx&yyy') if __name__ == "__main__": unittest.main()