Beispiel #1
0
 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
Beispiel #2
0
 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)
Beispiel #3
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)
Beispiel #4
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)
Beispiel #5
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)
Beispiel #6
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)
Beispiel #7
0
 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))
Beispiel #8
0
    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)
Beispiel #9
0
 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')
Beispiel #10
0
 def test__init__1(self):
     bi = bufferediterator_.BufferedIterator(ThreeLines())
     self.assertIsInstance(bi._buffer, inputbuffer_.InputBuffer)
     self.assertEqual(bi._index, 0)