[PATCH v3 2/4] advapi32/tests: Add some tests for RegRenameKey().
Nikolay Sivov
wine at gitlab.winehq.org
Tue Jun 28 15:53:26 CDT 2022
From: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/advapi32/tests/registry.c | 73 ++++++++++++++++++++++++++++++++++
include/winreg.h | 1 +
2 files changed, 74 insertions(+)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c
index 6152a313803..c2e78192f2e 100644
--- a/dlls/advapi32/tests/registry.c
+++ b/dlls/advapi32/tests/registry.c
@@ -4475,6 +4475,78 @@ static void test_EnumDynamicTimeZoneInformation(void)
RegCloseKey(key);
}
+static void test_RegRenameKey(void)
+{
+ HKEY key, key2;
+ LSTATUS ret;
+
+ ret = RegRenameKey(NULL, NULL, NULL);
+ todo_wine
+ ok(ret == ERROR_INVALID_PARAMETER, "Unexpected return value %ld.\n", ret);
+ ret = RegRenameKey(NULL, NULL, L"newname");
+ todo_wine
+ ok(ret == ERROR_INVALID_HANDLE, "Unexpected return value %ld.\n", ret);
+ ret = RegRenameKey(NULL, L"oldname", NULL);
+ todo_wine
+ ok(ret == ERROR_INVALID_HANDLE, "Unexpected return value %ld.\n", ret);
+ ret = RegRenameKey(NULL, L"oldname", L"newname");
+ todo_wine
+ ok(ret == ERROR_INVALID_HANDLE, "Unexpected return value %ld.\n", ret);
+
+ ret = RegCreateKeyExA(hkey_main, "TestRenameKey", 0, NULL, 0, KEY_READ, NULL, &key, NULL);
+ ok(!ret, "Unexpected return value %ld.\n", ret);
+ ret = RegRenameKey(key, NULL, L"TestNewRenameKey");
+ todo_wine
+ ok(ret == ERROR_ACCESS_DENIED, "Unexpected return value %ld.\n", ret);
+ RegCloseKey(key);
+
+ /* Rename itself. */
+ ret = RegCreateKeyExA(hkey_main, "TestRenameKey", 0, NULL, 0, KEY_WRITE, NULL, &key, NULL);
+ ok(!ret, "Unexpected return value %ld.\n", ret);
+ ret = RegRenameKey(key, NULL, NULL);
+ todo_wine
+ ok(ret == ERROR_INVALID_PARAMETER, "Unexpected return value %ld.\n", ret);
+ ret = RegRenameKey(key, NULL, L"TestNewRenameKey");
+ todo_wine
+ ok(!ret, "Unexpected return value %ld.\n", ret);
+ RegCloseKey(key);
+
+ ret = RegDeleteKeyA(hkey_main, "TestNewRenameKey");
+ todo_wine
+ ok(!ret, "Unexpected return value %ld.\n", ret);
+ ret = RegDeleteKeyA(hkey_main, "TestRenameKey");
+ todo_wine
+ ok(ret, "Unexpected return value %ld.\n", ret);
+
+ /* Subkey does not exist. */
+ ret = RegCreateKeyExA(hkey_main, "TestRenameKey", 0, NULL, 0, KEY_WRITE, NULL, &key, NULL);
+ ok(!ret, "Unexpected return value %ld.\n", ret);
+ ret = RegRenameKey(key, L"unknown_subkey", NULL);
+ todo_wine
+ ok(ret == ERROR_FILE_NOT_FOUND, "Unexpected return value %ld.\n", ret);
+ ret = RegRenameKey(key, L"unknown_subkey", L"known_subkey");
+ todo_wine
+ ok(ret == ERROR_FILE_NOT_FOUND, "Unexpected return value %ld.\n", ret);
+
+ /* Rename existing subkey. */
+ ret = RegCreateKeyExA(key, "known_subkey", 0, NULL, 0, KEY_WRITE, NULL, &key2, NULL);
+ ok(!ret, "Unexpected return value %ld.\n", ret);
+ RegCloseKey(key2);
+
+ ret = RegRenameKey(key, L"known_subkey", L"renamed_subkey");
+ todo_wine
+ ok(!ret, "Unexpected return value %ld.\n", ret);
+
+ ret = RegDeleteKeyA(key, "renamed_subkey");
+ todo_wine
+ ok(!ret, "Unexpected return value %ld.\n", ret);
+ ret = RegDeleteKeyA(key, "known_subkey");
+ todo_wine
+ ok(ret, "Unexpected return value %ld.\n", ret);
+
+ RegCloseKey(key);
+}
+
START_TEST(registry)
{
/* Load pointers for functions that are not available in all Windows versions */
@@ -4514,6 +4586,7 @@ START_TEST(registry)
test_RegLoadMUIString();
test_EnumDynamicTimeZoneInformation();
test_perflib_key();
+ test_RegRenameKey();
/* cleanup */
delete_key( hkey_main );
diff --git a/include/winreg.h b/include/winreg.h
index 00bc8c02dc8..da92fb11f94 100644
--- a/include/winreg.h
+++ b/include/winreg.h
@@ -178,6 +178,7 @@ WINADVAPI LSTATUS WINAPI RegQueryValueW(HKEY,LPCWSTR,LPWSTR,LPLONG);
WINADVAPI LSTATUS WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
WINADVAPI LSTATUS WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
#define RegQueryValueEx WINELIB_NAME_AW(RegQueryValueEx)
+WINADVAPI LSTATUS WINAPI RegRenameKey(HKEY,LPCWSTR,LPCWSTR);
WINADVAPI LSTATUS WINAPI RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR);
WINADVAPI LSTATUS WINAPI RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR);
#define RegReplaceKey WINELIB_NAME_AW(RegReplaceKey)
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/218
More information about the wine-devel
mailing list