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 #ifdef __USE_PSEH2__
16 #include <pseh/pseh2.h>
17 
18 #define StartSeh()                                  \
19 {                                                   \
20     NTSTATUS ExceptionStatus = STATUS_SUCCESS;      \
21     _SEH2_TRY                                       \
22     {
23 
24 #define EndSeh(ExpectedStatus)                      \
25     }                                               \
26     _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)         \
27     {                                               \
28         ExceptionStatus = _SEH2_GetExceptionCode(); \
29     }                                               \
30     _SEH2_END;                                      \
31     ok(ExceptionStatus == (ExpectedStatus),         \
32        "Exception 0x%08lx, expected 0x%08lx\n",     \
33        ExceptionStatus, (ExpectedStatus));          \
34 }
35 #else
36 #define StartSeh()                                  \
37 {                                                   \
38     NTSTATUS ExceptionStatus = STATUS_SUCCESS;      \
39     __try                                           \
40     {
41 
42 #define EndSeh(ExpectedStatus)                      \
43     }                                               \
44     __except(EXCEPTION_EXECUTE_HANDLER)             \
45     {                                               \
46         ExceptionStatus = GetExceptionCode();       \
47     }                                               \
48     ok(ExceptionStatus == (ExpectedStatus),         \
49        "Exception 0x%08lx, expected 0x%08lx\n",     \
50        ExceptionStatus, (ExpectedStatus));          \
51 }
52 #endif
53 
54 #define ok_hr(status, expected)                 ok_hex(status, expected)
55 #define ok_hr_(file, line, status, expected)    ok_hex_(file, line, status, expected)
56 
57 #define ok_eq_print(value, expected, spec)  ok((value) == (expected), #value " = " spec ", expected " spec "\n", value, expected)
58 #define ok_eq_pointer(value, expected)      ok_eq_print(value, expected, "%p")
59 #define ok_eq_int(value, expected)          ok_eq_print(value, expected, "%d")
60 #define ok_eq_uint(value, expected)         ok_eq_print(value, expected, "%u")
61 #define ok_eq_long(value, expected)         ok_eq_print(value, expected, "%ld")
62 #define ok_eq_ulong(value, expected)        ok_eq_print(value, expected, "%lu")
63 #define ok_eq_longlong(value, expected)     ok_eq_print(value, expected, "%I64d")
64 #define ok_eq_ulonglong(value, expected)    ok_eq_print(value, expected, "%I64u")
65 #define ok_eq_char(value, expected)         ok_eq_print(value, expected, "%c")
66 #define ok_eq_wchar(value, expected)        ok_eq_print(value, expected, "%C")
67 #ifndef _WIN64
68 #define ok_eq_size(value, expected)         ok_eq_print(value, (SIZE_T)(expected), "%lu")
69 #define ok_eq_longptr(value, expected)      ok_eq_print(value, (LONG_PTR)(expected), "%ld")
70 #define ok_eq_ulongptr(value, expected)     ok_eq_print(value, (ULONG_PTR)(expected), "%lu")
71 #elif defined _WIN64
72 #define ok_eq_size(value, expected)         ok_eq_print(value, (SIZE_T)(expected), "%I64u")
73 #define ok_eq_longptr(value, expected)      ok_eq_print(value, (LONG_PTR)(expected), "%I64d")
74 #define ok_eq_ulongptr(value, expected)     ok_eq_print(value, (ULONG_PTR)(expected), "%I64u")
75 #endif /* defined _WIN64 */
76 #define ok_eq_hex(value, expected)          ok_eq_print(value, expected, "0x%08lx")
77 #define ok_bool_true(value, desc)           ok((value) == TRUE, desc " FALSE, expected TRUE\n")
78 #define ok_bool_false(value, desc)          ok((value) == FALSE, desc " TRUE, expected FALSE\n")
79 #define ok_eq_bool(value, expected)         ok((value) == (expected), #value " = %s, expected %s\n", \
80                                                  (value) ? "TRUE" : "FALSE",                             \
81                                                  (expected) ? "TRUE" : "FALSE")
82 #define ok_eq_str(value, expected)          ok(!strcmp(value, expected), #value " = \"%s\", expected \"%s\"\n", value, expected)
83 #define ok_eq_wstr(value, expected)         ok(!wcscmp(value, expected), #value " = \"%ls\", expected \"%ls\"\n", value, expected)
84 #define ok_eq_tag(value, expected)          ok_eq_print(value, expected, "0x%08lx")
85 
86 #define ok_eq_hex64(value, expected)        ok_eq_print(value, expected, "%I64x")
87 #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)
88 
89 #endif /* _APITEST_H */
90