ReactOS 0.4.16-dev-1537-g4e425b5
apitest.h
Go to the documentation of this file.
1#ifndef _APITEST_H
2#define _APITEST_H
3
4// #define __ROS_LONG64__
5
6/* The user must #define STANDALONE if it uses this header in testlist.c */
7#define WIN32_NO_STATUS
8#include <wine/test.h>
9#undef WIN32_NO_STATUS
10
11/* See kmtests/include/kmt_test.h */
12#define InvalidPointer ((PVOID)0x5555555555555555ULL)
13// #define InvalidPointer ((PVOID)0x0123456789ABCDEFULL)
14
15/* Magic pointers come from KUSER_SHARED_DATA; needed to get true NT version on Windows 8+ */
16#define KUSER_SHARED_DATA_UMPTR 0x7FFE0000
17#define GetNTVersion() (((*(ULONG*)(KUSER_SHARED_DATA_UMPTR + 0x026C)) << 8) | (*(ULONG*)(KUSER_SHARED_DATA_UMPTR + 0x0270)))
18
19#include <pseh/pseh2.h>
20
21#define StartSeh() \
22{ \
23 NTSTATUS ExceptionStatus = STATUS_SUCCESS; \
24 _SEH2_TRY \
25 {
26
27#define EndSeh(ExpectedStatus) \
28 } \
29 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) \
30 { \
31 ExceptionStatus = _SEH2_GetExceptionCode(); \
32 } \
33 _SEH2_END; \
34 ok(ExceptionStatus == (ExpectedStatus), \
35 "Exception 0x%08lx, expected 0x%08lx\n", \
36 ExceptionStatus, (ExpectedStatus)); \
37}
38
39#define ok_hr(status, expected) ok_hex(status, expected)
40#define ok_hr_(file, line, status, expected) ok_hex_(file, line, status, expected)
41
42#define ok_eq_print(value, expected, spec) ok((value) == (expected), #value " = " spec ", expected " spec "\n", value, expected)
43#define ok_eq_print_(file, line, value, expected, spec) ok_(file,line)((value) == (expected), #value " = " spec ", expected " spec "\n", value, expected)
44#define ok_eq_pointer(value, expected) ok_eq_print(value, expected, "%p")
45#define ok_eq_int(value, expected) ok_eq_print(value, expected, "%d")
46#define ok_eq_uint(value, expected) ok_eq_print(value, expected, "%u")
47#define ok_eq_long(value, expected) ok_eq_print(value, expected, "%ld")
48#define ok_eq_ulong(value, expected) ok_eq_print(value, expected, "%lu")
49#define ok_eq_longlong(value, expected) ok_eq_print(value, expected, "%I64d")
50#define ok_eq_ulonglong(value, expected) ok_eq_print(value, expected, "%I64u")
51#define ok_eq_char(value, expected) ok_eq_print(value, expected, "%c")
52#define ok_eq_wchar(value, expected) ok_eq_print(value, expected, "%C")
53#ifndef _WIN64
54#define ok_eq_size(value, expected) ok_eq_print(value, (SIZE_T)(expected), "%lu")
55#define ok_eq_longptr(value, expected) ok_eq_print(value, (LONG_PTR)(expected), "%ld")
56#define ok_eq_ulongptr(value, expected) ok_eq_print(value, (ULONG_PTR)(expected), "%lu")
57#elif defined _WIN64
58#define ok_eq_size(value, expected) ok_eq_print(value, (SIZE_T)(expected), "%I64u")
59#define ok_eq_longptr(value, expected) ok_eq_print(value, (LONG_PTR)(expected), "%I64d")
60#define ok_eq_ulongptr(value, expected) ok_eq_print(value, (ULONG_PTR)(expected), "%I64u")
61#endif /* defined _WIN64 */
62#define ok_eq_hex(value, expected) ok_eq_print((unsigned long)value, (unsigned long)expected, "0x%08lx")
63#define ok_bool_true(value, desc) ok((value) == TRUE, desc " FALSE, expected TRUE\n")
64#define ok_bool_false(value, desc) ok((value) == FALSE, desc " TRUE, expected FALSE\n")
65#define ok_eq_bool(value, expected) ok((value) == (expected), #value " = %s, expected %s\n", \
66 (value) ? "TRUE" : "FALSE", \
67 (expected) ? "TRUE" : "FALSE")
68#define ok_eq_str(value, expected) ok(!strcmp(value, expected), #value " = \"%s\", expected \"%s\"\n", value, expected)
69#define ok_eq_wstr(value, expected) ok(!wcscmp(value, expected), #value " = \"%ls\", expected \"%ls\"\n", value, expected)
70#define ok_eq_tag(value, expected) ok_eq_print(value, expected, "0x%08lx")
71
72#define ok_eq_hex_(file, line, value, expected) ok_eq_print_(file, line, value, expected, "0x%08lx")
73#define ok_eq_hex64_(file, line, value, expected) ok_eq_print_(file, line, value, expected, "%I64x")
74#define ok_eq_hex64(value, expected) ok_eq_print((unsigned long long)value, (unsigned long long)expected, "%I64x")
75#define ok_eq_xmm(value, expected) ok((value).Low == (expected).Low, #value " = %I64x'%08I64x, expected %I64x'%08I64x\n", (value).Low, (value).High, (expected).Low, (expected).High)
76
77#endif /* _APITEST_H */