[GDI32_APITEST] Fix MSVC build
[reactos.git] / modules / rostests / apitests / advapi32 / RegEnumKey.c
1 /*
2 * PROJECT: ReactOS API tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Test for the RegEnumKey API
5 * PROGRAMMER: Thomas Faber & Doug Lyons
6 */
7
8 #include "precomp.h"
9
10 START_TEST(RegEnumKey)
11 {
12 LONG ErrorCode;
13 HKEY TestKey;
14 HKEY hKey;
15 WCHAR nameBuf[4];
16 DWORD nameLen;
17
18 /* Base key for our test */
19 ErrorCode = RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS_apitest", 0, NULL, 0, KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS, NULL, &hKey, NULL);
20 ok_dec(ErrorCode, ERROR_SUCCESS);
21
22 /* Create 1 char subkey */
23 ErrorCode = RegCreateKeyExW(hKey, L"1", 0, NULL, 0, READ_CONTROL, NULL, &TestKey, NULL);
24 ok_dec(ErrorCode, ERROR_SUCCESS);
25 RegCloseKey(TestKey);
26
27 /* Enumerate first key with space for 1 char */
28 nameLen = 1;
29 FillMemory(nameBuf, sizeof(nameBuf), 0x55);
30 ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL);
31 ok_dec(ErrorCode, ERROR_MORE_DATA);
32 ok_hex(nameBuf[0], 0x5555);
33 ok_hex(nameBuf[1], 0x5555);
34 ok_dec(nameLen, 1);
35
36 /* Enumerate first key with space for 2 chars */
37 nameLen = 2;
38 FillMemory(nameBuf, sizeof(nameBuf), 0x55);
39 ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL);
40 ok_dec(ErrorCode, ERROR_SUCCESS);
41 ok_hex(nameBuf[0], L'1');
42 ok_hex(nameBuf[1], 0);
43 ok_hex(nameBuf[2], 0x5555);
44 ok_dec(nameLen, 1);
45
46 /* Delete the subkey */
47 ErrorCode = RegDeleteKeyW(hKey, L"1");
48 ok_dec(ErrorCode, ERROR_SUCCESS);
49
50 /* Create 2 char subkey */
51 ErrorCode = RegCreateKeyExW(hKey, L"12", 0, NULL, 0, READ_CONTROL, NULL, &TestKey, NULL);
52 ok_dec(ErrorCode, ERROR_SUCCESS);
53 RegCloseKey(TestKey);
54
55 /* Enumerate first key with space for 2 chars */
56 FillMemory(nameBuf, sizeof(nameBuf), 0x55);
57 nameLen = 2;
58 ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL);
59 ok_dec(ErrorCode, ERROR_MORE_DATA);
60 ok_hex(nameBuf[0], 0x5555);
61 ok_hex(nameBuf[1], 0x5555);
62 ok(nameLen == 2, "nameLen = %ld, expected 2\n", nameLen);
63
64 /* Enumerate first key with space for 3 chars */
65 FillMemory(nameBuf, sizeof(nameBuf), 0x55);
66 nameLen = 3;
67 ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL);
68 ok_dec(ErrorCode, ERROR_SUCCESS);
69 ok_hex(nameBuf[0], L'1');
70 ok_hex(nameBuf[1], L'2');
71 ok_hex(nameBuf[2], 0);
72 ok_hex(nameBuf[3], 0x5555);
73 ok(nameLen == 2, "nameLen = %ld, expected 2\n", nameLen);
74
75 /* Delete the subkey */
76 ErrorCode = RegDeleteKeyW(hKey, L"12");
77 ok_dec(ErrorCode, ERROR_SUCCESS);
78
79 /* Delete our parent key */
80 ErrorCode = RegDeleteKeyW(hKey, L"");
81 ok_dec(ErrorCode, ERROR_SUCCESS);
82 RegCloseKey(hKey);
83 }