5
|
1 #!/usr/bin/env python
|
|
2
|
|
3 from expr import parse
|
|
4 import unittest
|
|
5
|
|
6 class ExpressionParserUnittest(unittest.TestCase):
|
6
|
7 """test the expression parser"""
|
5
|
8
|
|
9 def test_BasicValues(self):
|
|
10 self.assertEqual(1, parse("1"))
|
|
11 self.assertEqual(100, parse("100"))
|
|
12 self.assertEqual(True, parse("true"))
|
|
13 self.assertEqual(False, parse("false"))
|
|
14 self.assertEqual("", parse('""'))
|
|
15 self.assertEqual("foo bar", parse('"foo bar"'))
|
|
16 self.assertEqual(1, parse("foo", foo=1))
|
|
17 self.assertEqual(True, parse("bar", bar=True))
|
|
18 self.assertEqual("xyz", parse("abc123", abc123="xyz"))
|
|
19
|
|
20 def test_Equality(self):
|
|
21 self.assertTrue(parse("true == true"))
|
|
22 self.assertTrue(parse("false == false"))
|
|
23 self.assertTrue(parse("false == false"))
|
|
24 self.assertTrue(parse("1 == 1"))
|
|
25 self.assertTrue(parse("100 == 100"))
|
|
26 self.assertTrue(parse('"some text" == "some text"'))
|
|
27 self.assertTrue(parse("true != false"))
|
|
28 self.assertTrue(parse("1 != 2"))
|
|
29 self.assertTrue(parse('"text" != "other text"'))
|
|
30 self.assertTrue(parse("foo == true", foo=True))
|
|
31 self.assertTrue(parse("foo == 1", foo=1))
|
|
32 self.assertTrue(parse('foo == "bar"', foo='bar'))
|
|
33 self.assertTrue(parse("foo == bar", foo=True, bar=True))
|
|
34 self.assertTrue(parse("true == foo", foo=True))
|
|
35 self.assertTrue(parse("foo != true", foo=False))
|
|
36 self.assertTrue(parse("foo != 2", foo=1))
|
|
37 self.assertTrue(parse('foo != "bar"', foo='abc'))
|
|
38 self.assertTrue(parse("foo != bar", foo=True, bar=False))
|
|
39 self.assertTrue(parse("true != foo", foo=False))
|
|
40
|
|
41 def test_Conjunctions(self):
|
|
42 self.assertTrue(parse("true && true"))
|
|
43 self.assertTrue(parse("true || false"))
|
|
44 self.assertFalse(parse("false || false"))
|
|
45 self.assertFalse(parse("true && false"))
|
|
46 self.assertTrue(parse("true || false && false"))
|
|
47
|
|
48 def test_Parens(self):
|
|
49 self.assertTrue(parse("(true)"))
|
|
50 self.assertEquals(10, parse("(10)"))
|
|
51 self.assertEquals('foo', parse('("foo")'))
|
|
52 self.assertEquals(1, parse("(foo)", foo=1))
|
|
53 self.assertTrue(parse("(true == true)"))
|
|
54 self.assertTrue(parse("(true != false)"))
|
|
55 self.assertTrue(parse("(true && true)"))
|
|
56 self.assertTrue(parse("(true || false)"))
|
|
57 self.assertTrue(parse("(true && true || false)"))
|
|
58 self.assertFalse(parse("(true || false) && false"))
|
|
59 self.assertTrue(parse("(true || false) && true"))
|
|
60 self.assertTrue(parse("true && (true || false)"))
|
|
61 self.assertTrue(parse("true && (true || false)"))
|
|
62
|
|
63 if __name__ == '__main__':
|
|
64 unittest.main()
|