def test_write_and_read(self): buff = SlidingBuffer() # Write and verify tell() still reports 0 and len is correct. buff.write(TEST_BINARY_DATA) self.assertEqual(buff.tell(), 0) self.assertEqual(len(buff), len(TEST_BINARY_DATA)) # Read and verify tell() reports end. self.assertEqual(buff.read(), TEST_BINARY_DATA) self.assertEqual(buff.tell(), len(TEST_BINARY_DATA)) self.assertEqual(len(buff), len(TEST_BINARY_DATA))
def test_seek(self): buff = SlidingBuffer() buff.write(TEST_BINARY_DATA) # Try to seek forward. Verify the tell() doesn't change. with self.assertRaises(ValueError): pos = buff.tell() buff.seek(len(TEST_BINARY_DATA) + 1) self.assertEqual(pos, buff.tell()) # Read 8 bytes, test seek backwards, read again, and flush. self.assertEqual(buff.read(8), TEST_BINARY_DATA[:8]) buff.seek(0) self.assertEqual(buff.read(8), TEST_BINARY_DATA[:8]) buff.flush() self.assertEqual(buff.tell(), 8) # Try to seek to a byte that has already been flushed. with self.assertRaises(ValueError): pos = buff.tell() buff.seek(0) self.assertEqual(pos, buff.tell())
def test_flush(self): buff = SlidingBuffer() # Write and verify tell() still reports 0 and len is correct. buff.write(TEST_BINARY_DATA) self.assertEqual(buff.tell(), 0) self.assertEqual(len(buff), len(TEST_BINARY_DATA)) # Read 8 bytes and verify tell reports correctly. self.assertEqual(buff.read(8), TEST_BINARY_DATA[:8]) self.assertEqual(buff.tell(), 8) self.assertEqual(len(buff), len(TEST_BINARY_DATA)) # Flush buffer and verify tell doesn't change but len does. buff.flush() self.assertEqual(buff.tell(), 8) self.assertEqual(len(buff), len(TEST_BINARY_DATA) - 8) # Read remainder. self.assertEqual(buff.read(), TEST_BINARY_DATA[8:]) self.assertEqual(buff.tell(), len(TEST_BINARY_DATA)) self.assertEqual(len(buff), len(TEST_BINARY_DATA[8:]))
def test_close(self): buff = SlidingBuffer() buff.close() with self.assertRaises(ValueError): buff.read()