mirror of
https://github.com/reactos/reactos.git
synced 2024-11-18 13:01:40 +00:00
86 lines
2.8 KiB
C
86 lines
2.8 KiB
C
/*
|
|
* PROJECT: ReactOS API tests
|
|
* LICENSE: GPLv2+ - See COPYING in the top level directory
|
|
* PURPOSE: Test for the RegEnumKey API
|
|
* PROGRAMMER: Thomas Faber & Doug Lyons
|
|
*/
|
|
|
|
#include <apitest.h>
|
|
|
|
#define WIN32_NO_STATUS
|
|
#include <winreg.h>
|
|
|
|
START_TEST(RegEnumKey)
|
|
{
|
|
LONG ErrorCode;
|
|
HKEY TestKey;
|
|
HKEY hKey;
|
|
WCHAR nameBuf[4];
|
|
DWORD nameLen;
|
|
|
|
/* Base key for our test */
|
|
ErrorCode = RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS_apitest", 0, NULL, 0, KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS, NULL, &hKey, NULL);
|
|
ok_dec(ErrorCode, ERROR_SUCCESS);
|
|
|
|
/* Create 1 char subkey */
|
|
ErrorCode = RegCreateKeyExW(hKey, L"1", 0, NULL, 0, READ_CONTROL, NULL, &TestKey, NULL);
|
|
ok_dec(ErrorCode, ERROR_SUCCESS);
|
|
RegCloseKey(TestKey);
|
|
|
|
/* Enumerate first key with space for 1 char */
|
|
nameLen = 1;
|
|
FillMemory(nameBuf, sizeof(nameBuf), 0x55);
|
|
ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL);
|
|
ok_dec(ErrorCode, ERROR_MORE_DATA);
|
|
ok_hex(nameBuf[0], 0x5555);
|
|
ok_hex(nameBuf[1], 0x5555);
|
|
ok_dec(nameLen, 1);
|
|
|
|
/* Enumerate first key with space for 2 chars */
|
|
nameLen = 2;
|
|
FillMemory(nameBuf, sizeof(nameBuf), 0x55);
|
|
ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL);
|
|
ok_dec(ErrorCode, ERROR_SUCCESS);
|
|
ok_hex(nameBuf[0], L'1');
|
|
ok_hex(nameBuf[1], 0);
|
|
ok_hex(nameBuf[2], 0x5555);
|
|
ok_dec(nameLen, 1);
|
|
|
|
/* Delete the subkey */
|
|
ErrorCode = RegDeleteKeyW(hKey, L"1");
|
|
ok_dec(ErrorCode, ERROR_SUCCESS);
|
|
|
|
/* Create 2 char subkey */
|
|
ErrorCode = RegCreateKeyExW(hKey, L"12", 0, NULL, 0, READ_CONTROL, NULL, &TestKey, NULL);
|
|
ok_dec(ErrorCode, ERROR_SUCCESS);
|
|
RegCloseKey(TestKey);
|
|
|
|
/* Enumerate first key with space for 2 chars */
|
|
FillMemory(nameBuf, sizeof(nameBuf), 0x55);
|
|
nameLen = 2;
|
|
ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL);
|
|
ok_dec(ErrorCode, ERROR_MORE_DATA);
|
|
ok_hex(nameBuf[0], 0x5555);
|
|
ok_hex(nameBuf[1], 0x5555);
|
|
ok(nameLen == 2, "nameLen = %ld, expected 2\n", nameLen);
|
|
|
|
/* Enumerate first key with space for 3 chars */
|
|
FillMemory(nameBuf, sizeof(nameBuf), 0x55);
|
|
nameLen = 3;
|
|
ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL);
|
|
ok_dec(ErrorCode, ERROR_SUCCESS);
|
|
ok_hex(nameBuf[0], L'1');
|
|
ok_hex(nameBuf[1], L'2');
|
|
ok_hex(nameBuf[2], 0);
|
|
ok_hex(nameBuf[3], 0x5555);
|
|
ok(nameLen == 2, "nameLen = %ld, expected 2\n", nameLen);
|
|
|
|
/* Delete the subkey */
|
|
ErrorCode = RegDeleteKeyW(hKey, L"12");
|
|
ok_dec(ErrorCode, ERROR_SUCCESS);
|
|
|
|
/* Delete our parent key */
|
|
ErrorCode = RegDeleteKeyW(hKey, L"");
|
|
ok_dec(ErrorCode, ERROR_SUCCESS);
|
|
RegCloseKey(hKey);
|
|
}
|