view test.py @ 13:ec0e83ec329f

allow both kinds of strings
author Jeff Hammel <jhammel@mozilla.com>
date Fri, 03 Jun 2011 11:15:40 -0700
parents 4b07bb71c218
children facdc089ffbc
line wrap: on
line source

#!/usr/bin/env python

from expr import parse
import unittest

class ExpressionParserUnittest(unittest.TestCase):
    """test the expression parser"""

    def test_BasicValues(self):
        self.assertEqual(1, parse("1"))
        self.assertEqual(100, parse("100"))
        self.assertEqual(True, parse("true"))
        self.assertEqual(False, parse("false"))
        self.assertEqual("", parse('""'))
        self.assertEqual("foo bar", parse('"foo bar"'))
        self.assertEqual("foo bar", parse("'foo bar'"))
        self.assertEqual(1, parse("foo", foo=1))
        self.assertEqual(True, parse("bar", bar=True))
        self.assertEqual("xyz", parse("abc123", abc123="xyz"))

    def test_Equality(self):
        self.assertTrue(parse("true == true"))
        self.assertTrue(parse("false == false"))
        self.assertTrue(parse("false == false"))
        self.assertTrue(parse("1 == 1"))
        self.assertTrue(parse("100 == 100"))
        self.assertTrue(parse('"some text" == "some text"'))
        self.assertTrue(parse("true != false"))
        self.assertTrue(parse("1 != 2"))
        self.assertTrue(parse('"text" != "other text"'))
        self.assertTrue(parse("foo == true", foo=True))
        self.assertTrue(parse("foo == 1", foo=1))
        self.assertTrue(parse('foo == "bar"', foo='bar'))
        self.assertTrue(parse("foo == bar", foo=True, bar=True))
        self.assertTrue(parse("true == foo", foo=True))
        self.assertTrue(parse("foo != true", foo=False))
        self.assertTrue(parse("foo != 2", foo=1))
        self.assertTrue(parse('foo != "bar"', foo='abc'))
        self.assertTrue(parse("foo != bar", foo=True, bar=False))
        self.assertTrue(parse("true != foo", foo=False))

    def test_Conjunctions(self):
        self.assertTrue(parse("true && true"))
        self.assertTrue(parse("true || false"))
        self.assertFalse(parse("false || false"))
        self.assertFalse(parse("true && false"))
        self.assertTrue(parse("true || false && false"))

    def test_Parens(self):
        self.assertTrue(parse("(true)"))
        self.assertEquals(10, parse("(10)"))
        self.assertEquals('foo', parse('("foo")'))
        self.assertEquals(1, parse("(foo)", foo=1))
        self.assertTrue(parse("(true == true)"))
        self.assertTrue(parse("(true != false)"))
        self.assertTrue(parse("(true && true)"))
        self.assertTrue(parse("(true || false)"))
        self.assertTrue(parse("(true && true || false)"))
        self.assertFalse(parse("(true || false) && false"))
        self.assertTrue(parse("(true || false) && true"))
        self.assertTrue(parse("true && (true || false)"))
        self.assertTrue(parse("true && (true || false)"))
        
if __name__ == '__main__':
    unittest.main()