Пример #1
0
 def test_item_inset(self):
     P = Item('a', ['b', 'c'])
     Q = Item('a', ('b', 'c'))
     s = set()
     s.add(P)
     s.add(Q)
     self.assertEqual(len(s), 1)
Пример #2
0
 def test_transition_setofitems(self):
     self.assertEqual('{A -> •B}-label->{C -> •D}', str(Transition({Item('A', ('B', ))}, 'label', {Item('C', ('D',))})))
Пример #3
0
 def test_transition_tupleofitems(self):
     self.assertEqual(
         '(A -> •B)-label->(C -> •D)',
         str(
             Transition((Item('A', ('B', )), ), 'label',
                        (Item('C', ('D', )), ))))
Пример #4
0
 def test_item_eqo(self):
     self.assertFalse(Item('a', ('b', )) == object())
Пример #5
0
 def test_item_totalorder(self):
     self.assertTrue(Item('a', ('b', 'c'), 2) > Item('a', ('b', 'c'), 1))
Пример #6
0
 def test_item_wrong_pos(self):
     with self.assertRaises(ValueError):
         Item('A', ('B', ), 2)
Пример #7
0
 def test_item_nosymbol_after_dot(self):
     self.assertIsNone(Item('A', ('B', 'C'), 2).symbol_after_dot())
Пример #8
0
 def test_item_wrong_lhs(self):
     with self.assertRaises(ValueError):
         Item(1, ['a'])
Пример #9
0
 def test_item_symbol_after_dot(self):
     self.assertEqual('B', Item('A', ('x', 'B'), 1).symbol_after_dot())
Пример #10
0
 def test_item_notadvance(self):
     self.assertIsNone(Item('A', ('B', 'C')).advance('x'))
Пример #11
0
 def test_item_advance(self):
     self.assertEqual(Item('A', ('x', 'B'), 1),
                      Item('A', ('x', 'B')).advance('x'))
Пример #12
0
 def test_item_unpack(self):
     lhs, rhs, pos = Item('a', ['b', 'c'], 1)
     self.assertEqual(('a', ('b', 'c'), 1), (lhs, rhs, pos))
Пример #13
0
 def test_item_lto(self):
     self.assertIs(Item('a', ('b', )).__lt__(object()), NotImplemented)