def test_seek_delimiter_endline(): f = io.BytesIO(b"123\n456\n789") # if at zero, stay at zero seek_delimiter(f, b"\n", 5) assert f.tell() == 0 # choose the first block for bs in [1, 5, 100]: f.seek(1) seek_delimiter(f, b"\n", blocksize=bs) assert f.tell() == 4 # handle long delimiters well, even with short blocksizes f = io.BytesIO(b"123abc456abc789") for bs in [1, 2, 3, 4, 5, 6, 10]: f.seek(1) seek_delimiter(f, b"abc", blocksize=bs) assert f.tell() == 6 # End at the end f = io.BytesIO(b"123\n456") f.seek(5) seek_delimiter(f, b"\n", 5) assert f.tell() == 7
def test_seek_delimiter(): with gcs_maker(True) as gcs: fn = "test/accounts.1.json" data = files[fn] with gcs.open("/".join([TEST_BUCKET, fn])) as f: seek_delimiter(f, b"}", 0) assert f.tell() == 0 f.seek(1) seek_delimiter(f, b"}", 5) assert f.tell() == data.index(b"}") + 1 seek_delimiter(f, b"\n", 5) assert f.tell() == data.index(b"\n") + 1 f.seek(1, 1) ind = data.index(b"\n") + data[data.index(b"\n") + 1 :].index(b"\n") + 1 seek_delimiter(f, b"\n", 5) assert f.tell() == ind + 1