-
Notifications
You must be signed in to change notification settings - Fork 116
Expand file tree
/
Copy pathtest_improved_buffer.py
More file actions
43 lines (34 loc) · 1.28 KB
/
Copy pathtest_improved_buffer.py
File metadata and controls
43 lines (34 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import ctypes
import windows.utils as utils
import windows.generated_def as gdef
from .pfwtest import *
@pytest.mark.parametrize("type, size", [
(gdef.BYTE, 10),
(gdef.DWORD, 12),
(gdef.GUID, 42)])
def test_improved_BUFFER_size(type, size):
x = utils.BUFFER(type, 1)(size=size)
assert len(x) == 1
assert x.real_size == size
assert len(x._raw_buffer_) == size
@pytest.mark.parametrize("params, expected_type, expected_size", [
(([gdef.DWORD(x) for x in range(10)],), gdef.DWORD, 10), # list
(([gdef.GUID() for x in range(10)],), gdef.GUID, 10), # generator
((range(42), gdef.ULONGLONG), gdef.ULONGLONG, 42), # Explicite type
])
def test_improved_buffer(params, expected_type, expected_size):
x = utils.buffer(*params)
assert x._type_ == expected_type
assert len(x) == expected_size
@pytest.mark.parametrize("c_type, buffer, expected_size", [
(gdef.CHAR, b"12345", 5),
(gdef.WCHAR, b"\x001\x002\x003\x004\x005", 5),
(gdef.DWORD, b"1111222233334444", 4),
])
def test_partial_buffer_size_guess(c_type, buffer, expected_size):
buf = windows.utils.BUFFER(c_type).from_buffer_copy(buffer)
assert len(buf) == expected_size
def test_partial_buffer_string_call():
buffer = windows.utils.BUFFER(gdef.WCHAR)("LOL")
assert buffer[:] == "LOL"
assert len(buffer) == 3