def test__with__1(self): input = ThreeLines() with bufferediterator_.BufferedIterator(input) as lines: i = 0 for line in lines: self.assertEqual(line, input.lines[i]) self.assertEqual(line.loc().line, i + 1) i += 1
def test__drop__1(self): bi = bufferediterator_.BufferedIterator(ThreeLines()) next(bi) next(bi) next(bi) # this is quite illegal... bi._index = 1 bi.drop() self.assertEqual(len(bi._buffer), 2) self.assertEqual(bi._index, 0)
def test__clear__1(self): bi = bufferediterator_.BufferedIterator(ThreeLines()) next(bi) next(bi) next(bi) self.assertEqual(len(bi._buffer), 3) self.assertEqual(bi._index, 3) bi.clear() self.assertEqual(len(bi._buffer), 0) self.assertEqual(bi._index, 0)
def test__rewind__1(self): bi = bufferediterator_.BufferedIterator(ThreeLines()) next(bi) next(bi) next(bi) self.assertEqual(len(bi._buffer), 3) self.assertEqual(bi._index, 3) self.assertIs(bi.rewind(), bi) self.assertEqual(len(bi._buffer), 3) self.assertEqual(bi._index, 0)
def test__state__1(self): bi = bufferediterator_.BufferedIterator(ThreeLines()) state = bi.state() self.assertIsInstance(state, bufferediterator_.BufferedIteratorState) self.assertEqual(state._index, 0) next(bi) self.assertEqual(bi._index, 1) self.assertIs(bi.restore(state), bi) self.assertEqual(bi._index, 0)
def test__reentrant_1(self): def parse_false(iterator): next(iterator) return False def parse_true(iterator): next(iterator) return True bi = bufferediterator_.BufferedIterator(ThreeStrings()) next(bi) self.assertEqual(bi._index, 1) self.assertFalse(functions_.reentrant(parse_false, bi)) self.assertEqual(bi._index, 1) self.assertTrue(functions_.reentrant(parse_true, bi)) self.assertEqual(bi._index, 2)
def test__loc__1(self): it = ThreeLines() bi = bufferediterator_.BufferedIterator(it) self.assertEqual(it.loc(), inputloc_.InputLoc('three_lines', 1)) self.assertEqual(bi.loc(), it.loc()) line = next(bi) self.assertEqual(line.loc(), inputloc_.InputLoc('three_lines', 1)) self.assertEqual(it.loc(), inputloc_.InputLoc('three_lines', 2)) self.assertEqual(bi.loc(), it.loc()) line = next(bi) self.assertEqual(line.loc(), inputloc_.InputLoc('three_lines', 2)) self.assertEqual(it.loc(), inputloc_.InputLoc('three_lines', 3)) self.assertEqual(bi.loc(), it.loc()) line = next(bi) self.assertEqual(line.loc(), inputloc_.InputLoc('three_lines', 3)) self.assertEqual(it.loc(), inputloc_.InputLoc('three_lines', 4)) self.assertEqual(bi.loc(), it.loc()) # this is quite illegal... bi._index = 1 self.assertEqual(bi.loc(), inputloc_.InputLoc('three_lines', 2)) self.assertEqual(it.loc(), inputloc_.InputLoc('three_lines', 4))
def test__next__1(self): bi = bufferediterator_.BufferedIterator(ThreeLines()) self.assertEqual(bi._index, 0) self.assertEqual(len(bi._buffer), 0) ln = next(bi) self.assertIsInstance(ln, inputline_.InputLine) self.assertEqual(ln, 'first line') self.assertEqual(ln.loc(), inputloc_.InputLoc('three_lines', 1)) self.assertEqual(bi._index, 1) self.assertEqual(len(bi._buffer), 1) ln = next(bi) self.assertIsInstance(ln, inputline_.InputLine) self.assertEqual(ln, 'second line') self.assertEqual(ln.loc(), inputloc_.InputLoc('three_lines', 2)) self.assertEqual(bi._index, 2) self.assertEqual(len(bi._buffer), 2) ln = next(bi) self.assertIsInstance(ln, inputline_.InputLine) self.assertEqual(ln, 'third line') self.assertEqual(ln.loc(), inputloc_.InputLoc('three_lines', 3)) self.assertEqual(bi._index, 3) self.assertEqual(len(bi._buffer), 3) with self.assertRaises(StopIteration): next(bi) bi.rewind() self.assertEqual(bi._index, 0) self.assertEqual(len(bi._buffer), 3) ln = next(bi) self.assertIsInstance(ln, inputline_.InputLine) self.assertEqual(ln, 'first line') self.assertEqual(ln.loc(), inputloc_.InputLoc('three_lines', 1)) self.assertEqual(bi._index, 1) self.assertEqual(len(bi._buffer), 3) ln = next(bi) self.assertIsInstance(ln, inputline_.InputLine) self.assertEqual(ln, 'second line') self.assertEqual(ln.loc(), inputloc_.InputLoc('three_lines', 2)) self.assertEqual(bi._index, 2) self.assertEqual(len(bi._buffer), 3) ln = next(bi) self.assertIsInstance(ln, inputline_.InputLine) self.assertEqual(ln, 'third line') self.assertEqual(ln.loc(), inputloc_.InputLoc('three_lines', 3)) self.assertEqual(bi._index, 3) self.assertEqual(len(bi._buffer), 3) with self.assertRaises(StopIteration): next(bi) bi.rewind() self.assertEqual(bi._index, 0) self.assertEqual(len(bi._buffer), 3) ln = next(bi) self.assertIsInstance(ln, inputline_.InputLine) self.assertEqual(ln, 'first line') self.assertEqual(ln.loc(), inputloc_.InputLoc('three_lines', 1)) self.assertEqual(bi._index, 1) self.assertEqual(len(bi._buffer), 3) bi.drop() self.assertEqual(bi._index, 0) self.assertEqual(len(bi._buffer), 2) ln = next(bi) self.assertIsInstance(ln, inputline_.InputLine) self.assertEqual(ln, 'second line') self.assertEqual(ln.loc(), inputloc_.InputLoc('three_lines', 2)) self.assertEqual(bi._index, 1) self.assertEqual(len(bi._buffer), 2) ln = next(bi) self.assertIsInstance(ln, inputline_.InputLine) self.assertEqual(ln, 'third line') self.assertEqual(ln.loc(), inputloc_.InputLoc('three_lines', 3)) self.assertEqual(bi._index, 2) self.assertEqual(len(bi._buffer), 2) with self.assertRaises(StopIteration): next(bi)
def test__init__2(self): msg = '%s is not an instance of %s' % ( repr('foo'), repr(inputiterator_.InputIterator)) with self.assertRaisesRegex(TypeError, msg): bufferediterator_.BufferedIterator('foo')
def test__init__1(self): bi = bufferediterator_.BufferedIterator(ThreeLines()) self.assertIsInstance(bi._buffer, inputbuffer_.InputBuffer) self.assertEqual(bi._index, 0)