def test_init(): stream = CircularIO(10) assert stream.readable() assert stream.writable() assert stream.seekable() assert stream.size == 10 assert stream.tell() == 0 with pytest.raises(ValueError): CircularIO(-1)
def test_read1(): stream = CircularIO(10) stream.write(b'abcdef') stream.write(b'ghijklm') stream.seek(0) assert stream.read1() == b'def' stream.seek(0) assert stream.read1(5) == b'def' assert stream.read1(3) == b'ghi' assert stream.read1() == b'jklm' assert stream.read1() == b''
def test_read(): stream = CircularIO(10) stream.write(b'abcdef') stream.write(b'ghijklm') stream.seek(0) assert stream.read(1) == b'd' assert stream.read(4) == b'efgh' assert stream.read() == b'ijklm' assert stream.tell() == 10 assert stream.read() == b'' stream.seek(0) assert stream.read() == b'defghijklm'
def test_seek_tell(): stream = CircularIO(10) assert stream.tell() == 0 stream.write(b'defghijklm') assert stream.tell() == 10 stream.seek(0) assert stream.tell() == 0 stream.seek(4, io.SEEK_CUR) assert stream.tell() == 4 stream.seek(0, io.SEEK_END) assert stream.tell() == 10 with pytest.raises(ValueError): stream.seek(-20, io.SEEK_END)
def test_truncate(): stream = CircularIO(10) stream.write(b'abcdef') stream.write(b'ghijklm') stream.seek(8) stream.truncate() stream.seek(0, io.SEEK_END) assert stream.tell() == 8 stream.seek(10) stream.truncate() stream.seek(8) assert stream.read() == b'\x00\x00' stream.truncate(4) stream.seek(0) assert stream.read() == b'defg' with pytest.raises(ValueError): stream.truncate(-1)
def test_write(): stream = CircularIO(10) stream.write(b'') assert stream.tell() == 0 assert stream.getvalue() == b'' stream.seek(2) stream.write(b'abc') assert stream.getvalue() == b'\x00\x00abc' assert stream.tell() == 5 stream.write(b'def') assert stream.getvalue() == b'\x00\x00abcdef' assert stream.tell() == 8 stream.write(b'ghijklm') assert stream.getvalue() == b'defghijklm' assert stream.tell() == 10 stream.seek(1) stream.write(b'aaa') assert stream.getvalue() == b'daaahijklm' assert stream.tell() == 4 stream.seek(-2, io.SEEK_END) stream.write(b'bbb') assert stream.tell() == 10 assert stream.getvalue() == b'aaahijkbbb'
def test_read(): stream = CircularIO(10) stream.write(b'abcdef') # Circular buffer drops whole writes, so this will drop "abcdef" stream.write(b'ghijklm') stream.seek(0) assert stream.read(1) == b'g' assert stream.read(4) == b'hijk' assert stream.read() == b'lm' assert stream.tell() == 7 assert stream.read() == b'' stream.seek(0) assert stream.read() == b'ghijklm'
def test_circular_io(): with pytest.raises(ValueError): CircularIO(-1) stream = CircularIO(10) assert stream.readable() assert stream.writable() assert stream.seekable() assert stream.size == 10 assert stream.tell() == 0 stream.write(b'') assert stream.tell() == 0 assert stream.getvalue() == b'' stream.write(b'abc') assert stream.getvalue() == b'abc' assert stream.tell() == 3 stream.write(b'def') assert stream.getvalue() == b'abcdef' assert stream.tell() == 6 stream.write(b'ghijklm') assert stream.getvalue() == b'defghijklm' stream.seek(0) assert stream.read(1) == b'd' assert stream.read(4) == b'efgh' assert stream.read() == b'ijklm' assert stream.tell() == 10 stream.seek(0) assert stream.read() == stream.getvalue() stream.seek(0) assert stream.tell() == 0 stream.write(b'') assert stream.getvalue() == b'defghijklm' assert stream.tell() == 0 stream.write(b'a') assert stream.getvalue() == b'aefghijklm' assert stream.tell() == 1 stream.write(b'bcd') assert stream.getvalue() == b'abcdhijklm' assert stream.tell() == 4 stream.seek(0) assert stream.tell() == 0 stream.write(b'efghijklmnop') assert stream.getvalue() == b'ghijklmnop' assert stream.tell() == 10 assert stream.seek(-1, io.SEEK_CUR) == 9 assert stream.seek(0, io.SEEK_END) == 10 with pytest.raises(ValueError): stream.seek(-1) stream.seek(15) assert stream.tell() == 15 stream.write(b'qrs') assert stream.getvalue() == b'op\x00\x00\x00\x00\x00qrs' assert stream.tell() == 10 with pytest.raises(ValueError): stream.truncate(-1) stream.seek(4) stream.truncate() assert stream.getvalue() == b'op\x00\x00' assert stream.tell() == 4 stream.write(b'tuv') stream.write(b'wxyz') assert stream.getvalue() == b'p\x00\x00tuvwxyz' assert stream.tell() == 10 stream.truncate(5) assert stream.getvalue() == b'p\x00\x00tu' assert stream.tell() == 10 stream.write(b'') assert stream.getvalue() == b'p\x00\x00tu\x00\x00\x00\x00\x00' assert stream.tell() == 10
def test_circular_io(): with pytest.raises(ValueError): CircularIO(-1) stream = CircularIO(10) assert stream.readable() assert stream.writable() assert stream.seekable() assert stream.size == 10 assert stream.tell() == 0 stream.write(b"") assert stream.tell() == 0 assert stream.getvalue() == b"" stream.write(b"abc") assert stream.getvalue() == b"abc" assert stream.tell() == 3 stream.write(b"def") assert stream.getvalue() == b"abcdef" assert stream.tell() == 6 stream.write(b"ghijklm") assert stream.getvalue() == b"defghijklm" stream.seek(0) assert stream.read(1) == b"d" assert stream.read(4) == b"efgh" assert stream.read() == b"ijklm" assert stream.tell() == 10 stream.seek(0) assert stream.read() == stream.getvalue() stream.seek(0) assert stream.tell() == 0 stream.write(b"") assert stream.getvalue() == b"defghijklm" assert stream.tell() == 0 stream.write(b"a") assert stream.getvalue() == b"aefghijklm" assert stream.tell() == 1 stream.write(b"bcd") assert stream.getvalue() == b"abcdhijklm" assert stream.tell() == 4 stream.seek(0) assert stream.tell() == 0 stream.write(b"efghijklmnop") assert stream.getvalue() == b"ghijklmnop" assert stream.tell() == 10 assert stream.seek(-1, io.SEEK_CUR) == 9 assert stream.seek(0, io.SEEK_END) == 10 with pytest.raises(ValueError): stream.seek(-1) stream.seek(15) assert stream.tell() == 15 stream.write(b"qrs") assert stream.getvalue() == b"op\x00\x00\x00\x00\x00qrs" assert stream.tell() == 10 with pytest.raises(ValueError): stream.truncate(-1) stream.seek(4) stream.truncate() assert stream.getvalue() == b"op\x00\x00" assert stream.tell() == 4 stream.write(b"tuv") stream.write(b"wxyz") assert stream.getvalue() == b"p\x00\x00tuvwxyz" assert stream.tell() == 10 stream.truncate(5) assert stream.getvalue() == b"p\x00\x00tu" assert stream.tell() == 10 stream.write(b"") assert stream.getvalue() == b"p\x00\x00tu\x00\x00\x00\x00\x00" assert stream.tell() == 10