예제 #1
0
    def test_view_interface(self):
        data = self.data
        size = len(data)
        fp = io.BytesIO(data)
        gf = GettableFile(fp)
        fv = FileView(gf)

        # view, slice index
        subfv = fv[1:-1]
        self.assertEqual(subfv.read(), data[1:-1])
        self.assertEqual(len(subfv), size - 2)

        # view, integer index
        self.assertEqual(fv[2], data[2])

        # view, out of bounds index
        with self.assertRaises(IndexError):
            fv[size]

        # view are independent
        self.assertEqual(fv[:2].read(), data[:2])
        self.assertEqual(fv[-2:].read(), data[-2:])
예제 #2
0
    def test_file_interface(self):
        data = self.data
        size = len(data)
        fp = io.BytesIO(data)
        gf = GettableFile(fp)
        fv = FileView(gf)

        # partial read
        self.assertEqual(fv.read(1), data[0:1])

        # read all, also check continuity
        self.assertEqual(fv.read(), data[1:])

        # seek and tell
        self.assertEqual(len(fv), size)

        self.assertEqual(fv.seek(2), 2)
        self.assertEqual(fv.tell(), 2)

        self.assertEqual(fv.seek(2, io.SEEK_CUR), 4)
        self.assertEqual(fv.tell(), 4)

        self.assertEqual(fv.seek(0, io.SEEK_END), size)
        self.assertEqual(fv.tell(), size)

        # IOBase derived methods
        fv.seek(0)
        self.assertEqual(fv.readlines(), [data])