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:])
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])