|
| 1 | +import pytest |
| 2 | +from dictdatabase import io_bytes |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | +def test_write_bytes(use_test_dir, name_of_test): |
| 7 | + # Write shorter content at index |
| 8 | + io_bytes.write(name_of_test, b"0123456789") |
| 9 | + io_bytes.write(name_of_test, b"abc", 2) |
| 10 | + assert io_bytes.read(name_of_test) == b"01abc" |
| 11 | + # Overwrite with shorter content |
| 12 | + io_bytes.write(name_of_test, b"xy") |
| 13 | + assert io_bytes.read(name_of_test) == b"xy" |
| 14 | + # Overwrite with longer content |
| 15 | + io_bytes.write(name_of_test, b"0123456789") |
| 16 | + io_bytes.write(name_of_test, b"abcdef", 8) |
| 17 | + assert io_bytes.read(name_of_test) == b"01234567abcdef" |
| 18 | + # Write at index out of range |
| 19 | + io_bytes.write(name_of_test, b"01") |
| 20 | + io_bytes.write(name_of_test, b"ab", 4) |
| 21 | + assert io_bytes.read(name_of_test) == b'01\x00\x00ab' |
| 22 | + |
| 23 | + |
| 24 | + |
| 25 | +def test_read_bytes(use_test_dir, name_of_test, use_compression): |
| 26 | + io_bytes.write(name_of_test, b"0123456789") |
| 27 | + # In range |
| 28 | + assert io_bytes.read(name_of_test, 2, 5) == b"234" |
| 29 | + # Complete range |
| 30 | + assert io_bytes.read(name_of_test, 0, 10) == b"0123456789" |
| 31 | + assert io_bytes.read(name_of_test, 0, None) == b"0123456789" |
| 32 | + assert io_bytes.read(name_of_test) == b"0123456789" |
| 33 | + # End out of range |
| 34 | + assert io_bytes.read(name_of_test, 9, 20) == b"9" |
| 35 | + # Completely out of range |
| 36 | + assert io_bytes.read(name_of_test, 25, 30) == b"" |
| 37 | + # Start negative |
| 38 | + if use_compression: |
| 39 | + assert io_bytes.read(name_of_test, -5, 3) == b"" |
| 40 | + else: |
| 41 | + with pytest.raises(OSError): |
| 42 | + io_bytes.read(name_of_test, -5, 3) |
0 commit comments