]> git.phdru.name Git - phdru.name/cgi-bin/blog-ru/search-tags.git/blobdiff - parser/test_parser.py
Allow 'NOT ' and 'not '
[phdru.name/cgi-bin/blog-ru/search-tags.git] / parser / test_parser.py
index 3e54f5c16a76965cc854aa0be6642f767975da2b..4696047338be02e8f749ebae22d5fb39b7e4f5cf 100755 (executable)
@@ -18,14 +18,36 @@ class TestParser(unittest.TestCase):
         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)'),
+            ('NOT', ('PARENS', ('AND', ('NAME', 'xxx'), ('NAME', 'yyy'))))
+        )
         self.assertEqual(parser.parse('!xxx&yyy&zzz|ooo'),
             ('OR', ('AND', ('AND', ('NOT', ('NAME', 'xxx')), ('NAME', 'yyy')), ('NAME', 'zzz')), ('NAME', 'ooo'))
         )
+        self.assertEqual(parser.parse('!(xxx &&  yyy)'),
+            ('NOT', ('PARENS', ('AND', ('NAME', 'xxx'), ('NAME', 'yyy'))))
+        )
+        self.assertEqual(parser.parse('!(xxx || yyy)'),
+            ('NOT', ('PARENS', ('OR', ('NAME', 'xxx'), ('NAME', 'yyy'))))
+        )
+        self.assertEqual(parser.parse('xxx and yyy'),
+            ('AND', ('NAME', 'xxx'), ('NAME', 'yyy'))
+        )
+        self.assertEqual(parser.parse('xxx or  yyy'),
+            ('OR', ('NAME', 'xxx'), ('NAME', 'yyy'))
+        )
+        self.assertEqual(parser.parse('xxx OR yyy'),
+            ('OR', ('NAME', 'xxx'), ('NAME', 'yyy'))
+        )
+        self.assertEqual(parser.parse('not xxx'),
+            ('NOT', ('NAME', 'xxx'))
+        )
+        self.assertEqual(parser.parse('NOT xxx'),
+            ('NOT', ('NAME', 'xxx'))
+        )
+
+    def test_05_bad_expression(self):
+        self.assertIs(parser.parse('!(xxx&yyy'), None)
 
 if __name__ == "__main__":
     unittest.main()