]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
More plural._Parser tests
authorbenselme <benselme@gmail.com>
Fri, 9 Jan 2015 00:22:20 +0000 (19:22 -0500)
committerbenselme <benselme@gmail.com>
Fri, 9 Jan 2015 00:22:20 +0000 (19:22 -0500)
tests/test_plural.py

index d20d186a480a0d8abfac10879860fa82c4942bb9..489c0efcb196341e097993be5d9e0089f19fef84 100644 (file)
@@ -161,18 +161,40 @@ def make_range_list(*values):
 class PluralRuleParserTestCase(unittest.TestCase):
     def setUp(self):
         self.n = plural.ident_node('n')
-        self.n_eq_1 = ('relation', ('in', self.n, make_range_list(1)))
+
+    def n_eq(self, v):
+        return 'relation', ('in', self.n, make_range_list(v))
 
     def test_error_when_unexpected_end(self):
         with pytest.raises(plural.RuleError):
             plural._Parser('n =')
 
     def test_eq_relation(self):
-        assert plural._Parser('n = 1').ast == self.n_eq_1
+        assert plural._Parser('n = 1').ast == self.n_eq(1)
 
     def test_in_range_relation(self):
         assert plural._Parser('n = 2..4').ast == \
             ('relation', ('in', self.n, make_range_list((2, 4))))
 
     def test_negate(self):
-        assert plural._Parser('n != 1').ast == plural.negate(self.n_eq_1)
\ No newline at end of file
+        assert plural._Parser('n != 1').ast == plural.negate(self.n_eq(1))
+
+    def test_or(self):
+        assert plural._Parser('n = 1 or n = 2').ast ==\
+            ('or', (self.n_eq(1), self.n_eq(2)))
+
+    def test_and(self):
+        assert plural._Parser('n = 1 and n = 2').ast ==\
+            ('and', (self.n_eq(1), self.n_eq(2)))
+
+    def test_or_and(self):
+        assert plural._Parser('n = 0 or n != 1 and n % 100 = 1..19' ).ast ==\
+            ('or', (self.n_eq(0),
+                    ('and', (plural.negate(self.n_eq(1)),
+                             ('relation', ('in',
+                                           ('mod', (self.n,
+                                                    plural.value_node(100))),
+                                           (make_range_list((1, 19))))))
+                    )
+            )
+            )
\ No newline at end of file