Disable some misleading service tests because a test cannot determine wheter or not...
[reactos.git] / rostests / apitests / w32knapi / ntuser / NtUserEnumDisplaySettings.c
1
2 static struct
3 {
4 DEVMODEW devmode;
5 CHAR buffer[0xffff];
6 } data;
7
8 INT
9 TEST_NtUserEnumDisplaySettings(PTESTINFO pti)
10 {
11 UNICODE_STRING usDeviceName;
12 WCHAR szName[] = L"DISPLAY";
13 NTSTATUS Status;
14 INT i;
15
16 SetLastError(ERROR_SUCCESS);
17 Status = NtUserEnumDisplaySettings(NULL, 0, 0, 0);
18 TEST(Status == STATUS_ACCESS_VIOLATION);
19 TEST(GetLastError() == ERROR_SUCCESS);
20
21 data.devmode.dmDriverExtra = 0;
22 for (i = 0; i < 2 * sizeof(DEVMODEW); i++)
23 {
24 data.devmode.dmSize = i;
25 Status = NtUserEnumDisplaySettings(NULL, 1000, (DEVMODEW*)&data, 0);
26 if (i != sizeof(DEVMODEW))
27 {
28 TEST(Status == STATUS_BUFFER_TOO_SMALL);
29 }
30 }
31 TEST(GetLastError() == ERROR_SUCCESS);
32
33 usDeviceName.Buffer = NULL;
34 usDeviceName.Length = 0;
35 usDeviceName.MaximumLength = 0;
36 Status = NtUserEnumDisplaySettings(&usDeviceName, ENUM_CURRENT_SETTINGS, (DEVMODEW*)&data, 0);
37 TEST(Status == STATUS_BUFFER_TOO_SMALL);
38 Status = NtUserEnumDisplaySettings(&usDeviceName, -4, (DEVMODEW*)&data, 0);
39 TEST(Status == STATUS_BUFFER_TOO_SMALL);
40
41 data.devmode.dmSize = sizeof(DEVMODEW);
42 data.devmode.dmDriverExtra = 0xffff;
43 Status = NtUserEnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, (DEVMODEW*)&data, 0);
44 TEST(Status == STATUS_SUCCESS);
45
46 data.devmode.dmSize = sizeof(DEVMODEW);
47 data.devmode.dmDriverExtra = 0;
48 Status = NtUserEnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, (DEVMODEW*)&data, 0);
49 TEST(Status == STATUS_SUCCESS);
50
51 usDeviceName.Buffer = NULL;
52 usDeviceName.Length = 0;
53 usDeviceName.MaximumLength = 0;
54 Status = NtUserEnumDisplaySettings(&usDeviceName, ENUM_CURRENT_SETTINGS, (DEVMODEW*)&data, 0);
55 TEST(Status == STATUS_INVALID_PARAMETER_1);
56 Status = NtUserEnumDisplaySettings(&usDeviceName, -4, (DEVMODEW*)&data, 0);
57 TEST(Status == STATUS_INVALID_PARAMETER_1);
58
59 Status = NtUserEnumDisplaySettings(NULL, 0, (DEVMODEW*)&data, 0);
60 TEST(Status == STATUS_SUCCESS);
61 Status = NtUserEnumDisplaySettings(NULL, 1, (DEVMODEW*)&data, 0);
62 TEST(Status == STATUS_SUCCESS);
63 Status = NtUserEnumDisplaySettings(NULL, 2, (DEVMODEW*)&data, 0);
64 TEST(Status == STATUS_SUCCESS);
65 Status = NtUserEnumDisplaySettings(NULL, 4, (DEVMODEW*)&data, 0);
66 TEST(Status == STATUS_SUCCESS);
67 Status = NtUserEnumDisplaySettings(NULL, 8, (DEVMODEW*)&data, 0);
68 TEST(Status == STATUS_SUCCESS);
69
70 Status = NtUserEnumDisplaySettings(NULL, 247, (DEVMODEW*)&data, 0);
71 TEST(Status == STATUS_SUCCESS);
72 Status = NtUserEnumDisplaySettings(NULL, 248, (DEVMODEW*)&data, 0);
73 TEST(Status == STATUS_INVALID_PARAMETER_2);
74
75 Status = NtUserEnumDisplaySettings(NULL, -1, (DEVMODEW*)&data, 0);
76 TEST(Status == STATUS_SUCCESS);
77 Status = NtUserEnumDisplaySettings(NULL, -2, (DEVMODEW*)&data, 0);
78 TEST(Status == STATUS_SUCCESS);
79 Status = NtUserEnumDisplaySettings(NULL, -3, (DEVMODEW*)&data, 0);
80 TEST(Status == STATUS_SUCCESS);
81 Status = NtUserEnumDisplaySettings(NULL, -4, (DEVMODEW*)&data, 0);
82 TEST(Status == STATUS_INVALID_PARAMETER_2);
83
84 Status = NtUserEnumDisplaySettings(&usDeviceName, ENUM_CURRENT_SETTINGS, (DEVMODEW*)&data, 0);
85 TEST(Status == STATUS_INVALID_PARAMETER_1);
86
87 usDeviceName.Buffer = szName;
88 usDeviceName.Length = wcslen(szName);
89 usDeviceName.MaximumLength = usDeviceName.Length;
90 Status = NtUserEnumDisplaySettings(&usDeviceName, ENUM_CURRENT_SETTINGS, (DEVMODEW*)&data, 0);
91 TEST(Status == STATUS_INVALID_PARAMETER_1);
92
93 Status = NtUserEnumDisplaySettings(&usDeviceName, 1000, (DEVMODEW*)&data, 123456);
94 TEST(Status == STATUS_INVALID_PARAMETER_1);
95
96 TEST(GetLastError() == ERROR_SUCCESS);
97
98 return APISTATUS_NORMAL;
99 }