Create a branch for Thomas Faber's work on creating a kernel mode test suite for...
[reactos.git] / apitests / w32knapi / ntuser / NtUserCallOneParam.c
1
2 INT
3 Test_OneParamRoutine_BeginDeferWindowPos(PTESTINFO pti) /* 0x1e */
4 {
5 HDWP hWinPosInfo;
6
7 hWinPosInfo = (HDWP)NtUserCallOneParam(5, 0x1e);
8 TEST(hWinPosInfo != 0);
9 TEST(EndDeferWindowPos(hWinPosInfo) != 0);
10
11 return APISTATUS_NORMAL;
12 }
13
14 INT
15 Test_OneParamRoutine_WindowFromDC(PTESTINFO pti) /* 0x1f */
16 {
17 HDC hDC = GetDC(NULL);
18 HWND hWnd;
19
20 hWnd = (HWND)NtUserCallOneParam((DWORD)hDC, 0x1f);
21 TEST(hWnd != 0);
22 TEST(IsWindow(hWnd));
23 TEST(hWnd == GetDesktopWindow());
24
25 return APISTATUS_NORMAL;
26 }
27
28 INT
29 Test_OneParamRoutine_CreateEmptyCurObject(PTESTINFO pti) /* XP/2k3 : 0x21, vista 0x25 */
30 {
31 HICON hIcon ;
32
33 /* Test 0 */
34 hIcon = (HICON) NtUserCallOneParam(0, _ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT);
35 TEST(hIcon != NULL);
36
37 TEST(NtUserDestroyCursor(hIcon, 0) == TRUE);
38
39 /* Test Garbage */
40 hIcon = (HICON) NtUserCallOneParam(0xdeadbeef, _ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT);
41 TEST(hIcon != NULL);
42
43 TEST(NtUserDestroyCursor(hIcon, 0xbaadf00d) == TRUE);
44
45 return APISTATUS_NORMAL;
46 }
47
48 INT
49 Test_OneParamRoutine_MapDesktopObject(PTESTINFO pti) /* 0x30 */
50 {
51 DWORD pObject;
52 HWND hWnd;
53 HMENU hMenu;
54
55 hWnd = GetDesktopWindow();
56 pObject = NtUserCallOneParam((DWORD)hWnd, _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT);
57 TEST(pObject > 0);
58 TEST(pObject < 0x80000000);
59
60 hMenu = CreateMenu();
61 pObject = NtUserCallOneParam((DWORD)hMenu, _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT);
62 DestroyMenu(hMenu);
63 TEST(pObject > 0);
64 TEST(pObject < 0x80000000);
65
66 return APISTATUS_NORMAL;
67 }
68
69 INT
70 Test_OneParamRoutine_SwapMouseButtons(PTESTINFO pti) /* 0x42 */
71 {
72 BOOL bInverse;
73
74 NtUserCallOneParam(TRUE, _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON);
75 bInverse = (BOOL)NtUserCallOneParam(FALSE, _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON);
76 TEST(bInverse == TRUE);
77 bInverse = (BOOL)NtUserCallOneParam(FALSE, _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON);
78 TEST(bInverse == FALSE);
79
80 // TODO: test other values
81 return APISTATUS_NORMAL;
82 }
83
84 INT
85 Test_NtUserCallOneParam(PTESTINFO pti)
86 {
87 Test_OneParamRoutine_BeginDeferWindowPos(pti); /* 0x1e */
88 Test_OneParamRoutine_WindowFromDC(pti); /* 0x1f */
89 Test_OneParamRoutine_CreateEmptyCurObject(pti); /* XP/2k3 : 0x21, vista 0x25 */
90 Test_OneParamRoutine_MapDesktopObject(pti); /* 0x30 */
91
92 Test_OneParamRoutine_SwapMouseButtons(pti); /* 0x42 */
93
94 return APISTATUS_NORMAL;
95 }