예제 #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)
예제 #2
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''
예제 #3
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'
예제 #4
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)
예제 #5
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)
예제 #6
0
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'
예제 #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
예제 #9
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
예제 #10
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