Beispiel #1
0
 def test_escaped_chars(self):
     self.assertEqual(
         Expression(Name('name'), Comparison('~'),
                    Const(u'Contains a "quoted" str, 年年有余')),
         self.parser.parse(u'name ~ "Contains a \\"quoted\\" str, 年年有余"'))
     self.assertEqual(
         Expression(Name('options'), Comparison('='), Const(u'П и Щ')),
         self.parser.parse(u'options = "\\u041f \\u0438 \\u0429"'))
Beispiel #2
0
 def test_equality(self):
     self.assertEqual(
         Expression(Name('age'), Comparison('='), Const(18)),
         Expression(Name('age'), Comparison('='), Const(18)),
     )
     self.assertNotEqual(
         Expression(Name('age'), Comparison('='), Const(42)),
         Expression(Name('age'), Comparison('='), Const(18)),
     )
Beispiel #3
0
 def test_numbers(self):
     self.assertEqual(
         Expression(Name('pk'), Comparison('>'), Const(5)),
         self.parser.parse('pk > 5')
     )
     self.assertEqual(
         Expression(Name('rating'), Comparison('<='), Const(523)),
         self.parser.parse('rating <= 5.23e2')
     )
Beispiel #4
0
 def test_comparisons(self):
     self.assertEqual(
         Expression(Name('age'), Comparison('>='), Const(18)),
         self.parser.parse('age >= 18')
     )
     self.assertEqual(
         Expression(Name('gender'), Comparison('='), Const("female")),
         self.parser.parse('gender = "female"')
     )
     self.assertEqual(
         Expression(Name('name'), Comparison('!='), Const('Gennady')),
         self.parser.parse('name != "Gennady"')
     )
     self.assertEqual(
         Expression(Name('married'), Comparison('in'),
                    List([Const(True), Const(False)])),
         self.parser.parse('married in (True, False)')
     )
     self.assertEqual(
         Expression(Name('smile'), Comparison('!='), Const(None)),
         self.parser.parse('(smile != None)')
     )
     self.assertEqual(
         Expression(Name(['job', 'best', 'title']), Comparison('>'),
                    Const('none')),
         self.parser.parse('job.best.title > "none"')
     )
Beispiel #5
0
 def test_logical(self):
     self.assertEqual(
         Expression(
             Expression(Name('age'), Comparison('>='), Const(18)),
             Logical('and'),
             Expression(Name('age'), Comparison('<='), Const(45)),
         ),
         self.parser.parse('age >= 18 and age <= 45')
     )
     self.assertEqual(
         Expression(
             Expression(
                 Expression(Name('city'), Comparison('='), Const('Ivanovo')),
                 Logical('and'),
                 Expression(Name('age'), Comparison('<='), Const(35)),
             ),
             Logical('or'),
             Expression(
                 Expression(Name('city'), Comparison('='), Const('Paris')),
                 Logical('and'),
                 Expression(Name('age'), Comparison('<='), Const(45)),
             ),
         ),
         self.parser.parse('(city = "Ivanovo" and age <= 35) or '
                           '(city = "Paris" and age <= 45)')
     )
Beispiel #6
0
 def test_entity_props(self):
     self.assertEqual(
         Expression(Name(['user', 'group', 'id']), Comparison('='),
                    Const(5)),
         self.parser.parse('user.group.id = 5'),
     )
Beispiel #7
0
 def test_escaped_chars(self):
     self.assertEqual(
         Expression(Name('name'), Comparison('~'),
                    Const('Contains a "quoted" string')),
         self.parser.parse('name ~ "Contains a \\"quoted\\" string"')
     )