def test_read_slow(self, seekable): input_stream = bytes_io.SlowBytesIO(b'The quick brown fox', seekable) with _rewindable_input_stream.RewindableInputStream( cast(BinaryIO, input_stream)) as f: self.assertIsNone(f.read(10)) self.assertEqual(b'The q', f.read(10)) self.assertEqual(b'uick ', f.read(10)) self.assertIsNone(f.read(10)) self.assertEqual(b'brown', f.read(10)) self.assertEqual(b' fox', f.read(10)) self.assertIsNone(f.read(10)) self.assertEqual(b'', f.read(10))
def test_read(self): with bytes_io.SlowBytesIO(b'The quick brown fox') as f: with self.assertRaises(io.BlockingIOError): f.read(10) self.assertEqual(b'The q', f.read(10)) self.assertEqual(b'uick ', f.read(10)) with self.assertRaises(io.BlockingIOError): f.read(10) self.assertEqual(b'brown', f.read(10)) self.assertEqual(b' fox', f.read(10)) with self.assertRaises(io.BlockingIOError): f.read(10) self.assertEqual(b'', f.read(10)) self.assertTrue(f.closed)
def test_seekable(self): with bytes_io.SlowBytesIO(b'The quick brown fox', seekable=True) as f: self.assertTrue(f.seekable()) self.assertEqual(b'The quick brown fox', f.read()) f.seek(0) self.assertEqual(b'The quick brown fox', f.read())
def test_not_seekable(self): with bytes_io.SlowBytesIO(b'The quick brown fox', seekable=False) as f: self.assertFalse(f.seekable()) with self.assertRaises(io.UnsupportedOperation): f.seek(0)
def test_read_minus_one(self): with bytes_io.SlowBytesIO(b'The quick brown fox') as f: self.assertEqual(b'The quick brown fox', f.read(-1)) self.assertEqual(b'', f.read(-1))
def test_read_no_argument(self): with bytes_io.SlowBytesIO(b'The quick brown fox') as f: self.assertEqual(b'The quick brown fox', f.read()) self.assertEqual(b'', f.read())