Beispiel #1
0
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_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')
    # Chunks are now '\x00\x00', 'abc', 'def'
    assert stream.getvalue() == b'\x00\x00abcdef'
    assert stream.tell() == 8
    stream.write(b'ghijklm')
    # Chunks are now 'def', 'ghijklm'
    assert stream.getvalue() == b'defghijklm'
    assert stream.tell() == 10
    stream.seek(1)
    stream.write(b'aaa')
    # Chunks are now 'daa', 'ahijklm'
    assert stream.getvalue() == b'daaahijklm'
    assert stream.tell() == 4
    stream.seek(-2, io.SEEK_END)
    stream.write(b'bbb')
    # Chunks are now 'ahijkbb', 'b'
    assert stream.tell() == 8
    assert stream.getvalue() == b'ahijkbbb'
Beispiel #3
0
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_read1():
    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.read1() == b'ghijklm'
    stream.seek(0)
    assert stream.read1(5) == b'ghijk'
    assert stream.read1(3) == b'lm'
    assert stream.read1() == b''
Beispiel #5
0
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'
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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