+ 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)