Beispiel #1
0
 def test_right_associate(self):
     result = parser.parse(resolve, 'alist_-_{blist_|_clist}')
     expected = ('AA-(BB|CC)', alist[1] - (blist[1] | clist[1]))
     self.assertEqual(result, expected)
Beispiel #2
0
 def test_simple_difference(self):
     result = parser.parse(resolve, 'alist_-_blist')
     expected = ('AA-BB', alist[1] - blist[1])
     self.assertEqual(result, expected)
Beispiel #3
0
 def test_left_associate(self):
     result = parser.parse(resolve, '{alist_-_blist}_|_clist')
     expected = ('(AA-BB)|CC', (alist[1] - blist[1]) | clist[1])
     self.assertEqual(result, expected)
Beispiel #4
0
 def test_fail_bad_token(self):
     expected = 'Unrecognized syntax near character 6'
     with helper.AssertFail(self, SyntaxError, expected):
         parser.parse(resolve, 'alist_+_blist')
Beispiel #5
0
 def test_simple_union(self):
     result = parser.parse(resolve, 'alist_|_blist')
     expected = ('AA|BB', alist[1] | blist[1])
     self.assertEqual(result, expected)
Beispiel #6
0
 def test_parens_left(self):
     result = parser.parse(resolve, '{alist_-_clist}_-_blist')
     expected = ('AA-CC-BB', (alist[1] - clist[1]) - blist[1])
     self.assertEqual(result, expected)
Beispiel #7
0
 def test_vanilla_empty(self):
     """Vanilla address is not a set expression, so empty is not an error."""
     result = parser.parse(resolve, 'empty')
     expected = ('Empty', set())
     self.assertEqual(result, expected)
Beispiel #8
0
 def test_fail_misplaced_close_paren(self):
     expected = 'Misplaced closing parenthesis'
     with helper.AssertFail(self, SyntaxError, expected):
         parser.parse(resolve, 'alist_&_}')
Beispiel #9
0
 def test_fail_unmatched_close_paren(self):
     expected = 'Unmatched closing parenthesis'
     with helper.AssertFail(self, SyntaxError, expected):
         parser.parse(resolve, '{alist_&_blist}}')
Beispiel #10
0
 def test_fail_unmatched_open_paren(self):
     expected = 'Unmatched opening parenthesis'
     with helper.AssertFail(self, SyntaxError, expected):
         parser.parse(resolve, '{alist')
Beispiel #11
0
 def test_fail_misplaced_open_paren(self):
     expected = 'Misplaced opening parenthesis'
     with helper.AssertFail(self, SyntaxError, expected):
         parser.parse(resolve, 'alist{blist}')
Beispiel #12
0
 def test_fail_misplaced_difference(self):
     expected = 'Misplaced difference operator'
     with helper.AssertFail(self, SyntaxError, expected):
         parser.parse(resolve, '_-_alist')
Beispiel #13
0
 def test_fail_misplaced_intersect(self):
     expected = 'Misplaced intersection operator'
     with helper.AssertFail(self, SyntaxError, expected):
         parser.parse(resolve, '_&_alist')
Beispiel #14
0
 def test_fail_misplaced_leaf(self):
     expected = 'Misplaced list or person name'
     with helper.AssertFail(self, SyntaxError, expected):
         parser.parse(resolve, '{alist}blist')
Beispiel #15
0
 def test_omitted_parens(self):
     result = parser.parse(resolve, 'alist_|_blist_|_clist')
     expected = ('AA|BB|CC', alist[1] | blist[1] | clist[1])
     self.assertEqual(result, expected)
Beispiel #16
0
 def test_single_list(self):
     result = parser.parse(resolve, 'alist')
     expected = ('Alist', alist[1])
     self.assertEqual(result, expected)
Beispiel #17
0
 def test_surplus_parens(self):
     result = parser.parse(resolve, 'alist_|_{blist_|_clist}')
     expected = ('AA|BB|CC', alist[1] | blist[1] | clist[1])
     self.assertEqual(result, expected)
Beispiel #18
0
 def test_single_in_parens(self):
     result = parser.parse(resolve, '{alist}')
     expected = ('AA', alist[1])
     self.assertEqual(result, expected)
Beispiel #19
0
 def test_parens_right(self):
     result = parser.parse(resolve, 'alist_-_{clist_-_blist}')
     expected = ('AA-(CC-BB)', alist[1] - (clist[1] - blist[1]))
     self.assertEqual(result, expected)
Beispiel #20
0
 def test_simple_intersection(self):
     result = parser.parse(resolve, 'alist_&_blist')
     expected = ('AA&BB', alist[1] & blist[1])
     self.assertEqual(result, expected)
Beispiel #21
0
 def test_fail_empty_result(self):
     expected = 'No recipients match this set expression'
     with helper.AssertFail(self, SyntaxError, expected):
         parser.parse(resolve, 'alist_-_alist')
Beispiel #22
0
 def test_fail_unparenthesized(self):
     expected = 'Parentheses required when mixing different operators'
     with helper.AssertFail(self, SyntaxError, expected):
         parser.parse(resolve, 'alist_&_blist_|_clist')