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