def test_checkpoint_rewind_buffer(self): values = [1, 2, 3, 4, 5] itr = easyparse.BufferedIterator(values) itr.checkpoint() self.assertEqual(values[0], next(itr)) itr.rewind() self.assertEqual([x for x in itr], values)
def test_match_re_rules_with_failures(self): rule0 = easyparse.RegularExpressionRule(r'[a-z]') rule1 = easyparse.RegularExpressionRule(r'[0-9]') buf = easyparse.BufferedIterator('7a') buf.checkpoint() self.assertEqual(False, rule0.parse(buf)[0]) buf.rewind() self.assertEqual((True, '7'), rule1.parse(buf))
def test_stop_iteration_then_rewind(self): values = [1, 2, 3] itr = easyparse.BufferedIterator(values) itr.checkpoint() for i in range(3): self.assertEqual(values[i], next(itr)) self.assertRaises(StopIteration, lambda: next(itr)) itr.rewind() self.assertEqual([x for x in itr], values)
def test_commit(self): values = [1, 2, 3] itr = easyparse.BufferedIterator(values) itr.checkpoint() next(itr) itr.checkpoint() next(itr) itr.commit() self.assertEqual(3, next(itr)) itr.rewind() self.assertEqual([1, 2, 3], [x for x in itr])
def test_multiple_checkpoint_buffer(self): values = [1, 2, 3, 4, 5, 6] itr = easyparse.BufferedIterator(values) itr.checkpoint() for i in range(2): self.assertEqual(values[i], next(itr)) itr.checkpoint() for i in range(2): self.assertEqual(values[2 + i], next(itr)) itr.rewind() self.assertEqual(values[2], next(itr)) itr.rewind() self.assertEqual([x for x in itr], values)
def test_play_buffer(self): itr = easyparse.BufferedIterator([1, 2, 3]) act = [x for x in itr] exp = [1, 2, 3] self.assertEqual(act, exp)
def test_match_two_re_rules(self): rule0 = easyparse.RegularExpressionRule(r'[0-9]') rule1 = easyparse.RegularExpressionRule(r'[a-z]') buf = easyparse.BufferedIterator('a7') self.assertEqual((True, 'a'), rule1.parse(buf)) self.assertEqual((True, '7'), rule0.parse(buf))