testing/mozbase/manifestdestiny/tests/test_expressionparser.py

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rwxr-xr-x

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 #!/usr/bin/env python
     3 import unittest
     4 from manifestparser import parse
     6 class ExpressionParserTest(unittest.TestCase):
     7     """Test the conditional expression parser."""
     9     def test_basic(self):
    11         self.assertEqual(parse("1"), 1)
    12         self.assertEqual(parse("100"), 100)
    13         self.assertEqual(parse("true"), True)
    14         self.assertEqual(parse("false"), False)
    15         self.assertEqual('', parse('""'))
    16         self.assertEqual(parse('"foo bar"'), 'foo bar')
    17         self.assertEqual(parse("'foo bar'"), 'foo bar')
    18         self.assertEqual(parse("foo", foo=1), 1)
    19         self.assertEqual(parse("bar", bar=True), True)
    20         self.assertEqual(parse("abc123", abc123="xyz"), 'xyz')
    22     def test_equality(self):
    24         self.assertTrue(parse("true == true"))
    25         self.assertTrue(parse("false == false"))
    26         self.assertTrue(parse("1 == 1"))
    27         self.assertTrue(parse("100 == 100"))
    28         self.assertTrue(parse('"some text" == "some text"'))
    29         self.assertTrue(parse("true != false"))
    30         self.assertTrue(parse("1 != 2"))
    31         self.assertTrue(parse('"text" != "other text"'))
    32         self.assertTrue(parse("foo == true", foo=True))
    33         self.assertTrue(parse("foo == 1", foo=1))
    34         self.assertTrue(parse('foo == "bar"', foo='bar'))
    35         self.assertTrue(parse("foo == bar", foo=True, bar=True))
    36         self.assertTrue(parse("true == foo", foo=True))
    37         self.assertTrue(parse("foo != true", foo=False))
    38         self.assertTrue(parse("foo != 2", foo=1))
    39         self.assertTrue(parse('foo != "bar"', foo='abc'))
    40         self.assertTrue(parse("foo != bar", foo=True, bar=False))
    41         self.assertTrue(parse("true != foo", foo=False))
    42         self.assertTrue(parse("!false"))
    44     def test_conjunctures(self):
    45         self.assertTrue(parse("true && true"))
    46         self.assertTrue(parse("true || false"))
    47         self.assertFalse(parse("false || false"))
    48         self.assertFalse(parse("true && false"))
    49         self.assertTrue(parse("true || false && false"))
    51     def test_parentheses(self):
    52         self.assertTrue(parse("(true)"))
    53         self.assertEqual(parse("(10)"), 10)
    54         self.assertEqual(parse('("foo")'), 'foo')
    55         self.assertEqual(parse("(foo)", foo=1), 1)
    56         self.assertTrue(parse("(true == true)"), True)
    57         self.assertTrue(parse("(true != false)"))
    58         self.assertTrue(parse("(true && true)"))
    59         self.assertTrue(parse("(true || false)"))
    60         self.assertTrue(parse("(true && true || false)"))
    61         self.assertFalse(parse("(true || false) && false"))
    62         self.assertTrue(parse("(true || false) && true"))
    63         self.assertTrue(parse("true && (true || false)"))
    64         self.assertTrue(parse("true && (true || false)"))
    65         self.assertTrue(parse("(true && false) || (true && (true || false))"))
    68     def test_comments(self):
    69         # comments in expressions work accidentally, via an implementation
    70         # detail - the '#' character doesn't match any of the regular
    71         # expressions we specify as tokens, and thus are ignored.
    72         # However, having explicit tests for them means that should the
    73         # implementation ever change, comments continue to work, even if that
    74         # means a new implementation must handle them explicitly.
    75         self.assertTrue(parse("true == true # it does!"))
    76         self.assertTrue(parse("false == false # it does"))
    77         self.assertTrue(parse("false != true # it doesnt"))
    78         self.assertTrue(parse('"string with #" == "string with #" # really, it does'))
    79         self.assertTrue(parse('"string with #" != "string with # but not the same" # no match!'))
    81     def test_not(self):
    82         """
    83         Test the ! operator.
    84         """
    85         self.assertTrue(parse("!false"))
    86         self.assertTrue(parse("!(false)"))
    87         self.assertFalse(parse("!true"))
    88         self.assertFalse(parse("!(true)"))
    89         self.assertTrue(parse("!true || true)"))
    90         self.assertTrue(parse("true || !true)"))
    91         self.assertFalse(parse("!true && true"))
    92         self.assertFalse(parse("true && !true"))
    94 if __name__ == '__main__':
    95     unittest.main()

mercurial