mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
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
|
|
|