X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;ds=sidebyside;f=test_parser.py;fp=test_parser.py;h=e8f213aeb267e5e4c14b7d2668e1057e2afd83e5;hb=e329b871b1f4b97b62eaa2aa33c638886c5834df;hp=0000000000000000000000000000000000000000;hpb=1e45627b8f4f6074fd4d0df8379db1d8fa7f6b26;p=phdru.name%2Fcgi-bin%2Fblog-ru%2Fsearch-tags.git diff --git a/test_parser.py b/test_parser.py new file mode 100755 index 0000000..e8f213a --- /dev/null +++ b/test_parser.py @@ -0,0 +1,31 @@ +#! /usr/bin/env python + +import unittest + +class TestParser(unittest.TestCase): + def test_01_import(self): + global parser + from parse_query import parser + + def test_02_tag(self): + self.assertEqual(parser.parse('xxx'), ('NAME', 'xxx')) + + def test_03_bad_tag(self): + from ply.lex import LexError + self.assertRaises(LexError, parser.parse, 'XXX') + + def test_04_expression(self): + self.assertEqual(parser.parse('!(xxx&yyy)'), + ('NOT', ('PARENS', ('AND', ('NAME', 'xxx'), ('NAME', 'yyy')))) + ) + + def test_05_bad_expression(self): + self.assertIs(parser.parse('!(xxx&yyy'), None) + + def test_06_expression2(self): + self.assertEqual(parser.parse('!xxx&yyy&zzz|ooo'), + ('OR', ('AND', ('AND', ('NOT', ('NAME', 'xxx')), ('NAME', 'yyy')), ('NAME', 'zzz')), ('NAME', 'ooo')) + ) + +if __name__ == "__main__": + unittest.main()