def test_seekable(self): with bytes_io.SlowReadableRawBytes( b'The quick brown fox', seekable=True) as f: self.assertTrue(f.seekable()) self.assertIsNone(None, f.read()) self.assertEqual(b'The quick ', f.read()) f.seek(0) self.assertEqual(b'The quick ', f.read())
def test_read_slow_raw_readall(self, seekable): input_stream = bytes_io.SlowReadableRawBytes(b'The quick brown fox', seekable) with _rewindable_input_stream.RewindableInputStream( cast(BinaryIO, input_stream)) as f: self.assertIsNone(f.readall()) self.assertEqual(b'The quick ', f.readall()) self.assertEqual(b'brown fox', f.readall()) self.assertEqual(b'', f.readall())
def test_read(self): with bytes_io.SlowReadableRawBytes(b'The quick brown fox') 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)) self.assertTrue(f.closed)
def test_fake_streaming_aead_slow_read_success(self): saead = fake_streaming_aead.FakeRawStreamingAead('Name') ciphertext_dest = bytes_io.BytesIOWithValueAfterClose() with saead.new_raw_encrypting_stream(ciphertext_dest, b'aad') as es: self.assertLen(b'plaintext', es.write(b'plaintext')) self.assertTrue(ciphertext_dest.closed) ciphertext_src = bytes_io.SlowReadableRawBytes( ciphertext_dest.value_after_close()) with saead.new_raw_decrypting_stream( cast(BinaryIO, ciphertext_src), b'aad', close_ciphertext_source=True) as ds: # explicitly test that read returns None on the first call, because # that is needed to test one execution path in the wrapper. self.assertIsNone(ds.read()) self.assertEqual(ds.read(), b'plaintext')
def test_not_seekable(self): with bytes_io.SlowReadableRawBytes( 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.SlowReadableRawBytes(b'The quick brown fox') as f: self.assertIsNone(None, f.read(-1)) self.assertEqual(b'The quick ', f.read(-1)) self.assertEqual(b'brown fox', f.read(-1)) self.assertEqual(b'', f.read(-1))
def test_read_no_argument(self): with bytes_io.SlowReadableRawBytes(b'The quick brown fox') as f: self.assertIsNone(None, f.read()) self.assertEqual(b'The quick ', f.read()) self.assertEqual(b'brown fox', f.read()) self.assertEqual(b'', f.read())