all repos — mgba @ f73869ee4be7da9168d55cae57bc6e21e6c0cedb

mGBA Game Boy Advance Emulator

src/platform/python/tests/mgba/test_vfs.py (view raw)

 1import pytest
 2import os
 3
 4import mgba.vfs as vfs
 5from mgba._pylib import ffi
 6
 7
 8def test_vfs_open():
 9    with open(__file__) as f:
10        vf = vfs.open(f)
11        assert vf
12        assert vf.close()
13
14
15def test_vfs_open_path():
16    vf = vfs.open_path(__file__)
17    assert vf
18    assert vf.close()
19
20
21def test_vfs_read():
22    vf = vfs.open_path(__file__)
23    buffer = ffi.new('char[13]')
24    assert vf.read(buffer, 13) == 13
25    assert ffi.string(buffer) == b'import pytest'
26    vf.close()
27
28
29def test_vfs_readline():
30    vf = vfs.open_path(__file__)
31    buffer = ffi.new('char[16]')
32    linelen = vf.readline(buffer, 16)
33    assert linelen in (14, 15)
34    if linelen == 14:
35        assert ffi.string(buffer) == b'import pytest\n'
36    elif linelen == 15:
37        assert ffi.string(buffer) == b'import pytest\r\n'
38    vf.close()
39
40
41def test_vfs_read_all_size():
42    vf = vfs.open_path(__file__)
43    buffer = vf.read_all()
44    assert buffer
45    assert len(buffer)
46    assert len(buffer) == vf.size()
47    vf.close()
48
49
50def test_vfs_seek():
51    vf = vfs.open_path(__file__)
52    assert vf.seek(0, os.SEEK_SET) == 0
53    assert vf.seek(1, os.SEEK_SET) == 1
54    assert vf.seek(1, os.SEEK_CUR) == 2
55    assert vf.seek(-1, os.SEEK_CUR) == 1
56    assert vf.seek(0, os.SEEK_CUR) == 1
57    assert vf.seek(0, os.SEEK_END) == vf.size()
58    assert vf.seek(-1, os.SEEK_END) == vf.size() -1
59    vf.close()
60
61
62def test_vfs_open_path_invalid():
63    vf = vfs.open_path('.invalid')
64    assert not vf