+#! /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()