James Hawkins : advapi32: Add tests for RegQueryValue.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Jan 16 10:07:56 CST 2007
Module: wine
Branch: master
Commit: 6cc4510b719a0014afe948c59fb274c362a45b70
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6cc4510b719a0014afe948c59fb274c362a45b70
Author: James Hawkins <truiken at gmail.com>
Date: Tue Jan 16 04:16:11 2007 -0600
advapi32: Add tests for RegQueryValue.
---
dlls/advapi32/tests/registry.c | 117 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 117 insertions(+), 0 deletions(-)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c
index 45756c6..c016f6f 100644
--- a/dlls/advapi32/tests/registry.c
+++ b/dlls/advapi32/tests/registry.c
@@ -746,6 +746,122 @@ static void test_regconnectregistry( voi
}
+static void test_reg_query_value(void)
+{
+ HKEY subkey;
+ CHAR val[MAX_PATH];
+ WCHAR valW[5];
+ LONG size, ret;
+
+ static const WCHAR expected[] = {'d','a','t','a',0};
+ static const WCHAR set[] = {'d','a','t','a'};
+
+ ret = RegCreateKeyA(hkey_main, "subkey", &subkey);
+ ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
+
+ ret = RegSetValueA(subkey, NULL, REG_SZ, "data", 4);
+ ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
+
+ /* try an invalid hkey */
+ SetLastError(0xdeadbeef);
+ size = MAX_PATH;
+ ret = RegQueryValueA((HKEY)0xcafebabe, "subkey", val, &size);
+ ok(ret == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", ret);
+ ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %d\n", GetLastError());
+
+ /* try a NULL hkey */
+ SetLastError(0xdeadbeef);
+ size = MAX_PATH;
+ ret = RegQueryValueA(NULL, "subkey", val, &size);
+ ok(ret == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", ret);
+ ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %d\n", GetLastError());
+
+ /* try a NULL value */
+ size = MAX_PATH;
+ ret = RegQueryValueA(hkey_main, "subkey", NULL, &size);
+ ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
+ ok(size == 5, "Expected 5, got %d\n", size);
+
+ /* try a NULL size */
+ SetLastError(0xdeadbeef);
+ val[0] = '\0';
+ ret = RegQueryValueA(hkey_main, "subkey", val, NULL);
+ ok(ret == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", ret);
+ ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %d\n", GetLastError());
+ ok(lstrlenA(val) == 0, "Expected val to be untouched, got %s\n", val);
+
+ /* try a NULL value and size */
+ ret = RegQueryValueA(hkey_main, "subkey", NULL, NULL);
+ ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
+
+ /* try a size too small */
+ SetLastError(0xdeadbeef);
+ val[0] = '\0';
+ size = 1;
+ ret = RegQueryValueA(hkey_main, "subkey", val, &size);
+ ok(ret == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", ret);
+ ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %d\n", GetLastError());
+ ok(lstrlenA(val) == 0, "Expected val to be untouched, got %s\n", val);
+ ok(size == 5, "Expected 5, got %d\n", size);
+
+ /* successfully read the value using 'subkey' */
+ size = MAX_PATH;
+ ret = RegQueryValueA(hkey_main, "subkey", val, &size);
+ ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
+ ok(!lstrcmpA(val, "data"), "Expected 'data', got '%s'\n", val);
+ ok(size == 5, "Expected 5, got %d\n", size);
+
+ /* successfully read the value using the subkey key */
+ size = MAX_PATH;
+ ret = RegQueryValueA(subkey, NULL, val, &size);
+ ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
+ ok(!lstrcmpA(val, "data"), "Expected 'data', got '%s'\n", val);
+ ok(size == 5, "Expected 5, got %d\n", size);
+
+ /* unicode - try size too small */
+ SetLastError(0xdeadbeef);
+ valW[0] = '\0';
+ size = 0;
+ ret = RegQueryValueW(subkey, NULL, valW, &size);
+ ok(ret == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", ret);
+ ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %d\n", GetLastError());
+ ok(lstrlenW(valW) == 0, "Expected valW to be untouched\n");
+ ok(size == sizeof(expected), "Got wrong size: %d\n", size);
+
+ /* unicode - try size in WCHARS */
+ SetLastError(0xdeadbeef);
+ size = sizeof(valW) / sizeof(WCHAR);
+ ret = RegQueryValueW(subkey, NULL, valW, &size);
+ ok(ret == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", ret);
+ ok(GetLastError() == 0xdeadbeef, "Expected 0xdeadbeef, got %d\n", GetLastError());
+ ok(lstrlenW(valW) == 0, "Expected valW to be untouched\n");
+ ok(size == sizeof(expected), "Got wrong size: %d\n", size);
+
+ /* unicode - successfully read the value */
+ size = sizeof(valW);
+ ret = RegQueryValueW(subkey, NULL, valW, &size);
+ ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
+ ok(!lstrcmpW(valW, expected), "Got wrong value\n");
+ ok(size == sizeof(expected), "Got wrong size: %d\n", size);
+
+ /* unicode - set the value without a NULL terminator */
+ ret = RegSetValueW(subkey, NULL, REG_SZ, set, sizeof(set));
+ ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
+
+ /* unicode - read the unterminated value, value is terminated for us */
+ memset(valW, 'a', sizeof(valW));
+ size = sizeof(valW);
+ ret = RegQueryValueW(subkey, NULL, valW, &size);
+ todo_wine
+ {
+ ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
+ ok(!lstrcmpW(valW, expected), "Got wrong value\n");
+ ok(size == sizeof(expected), "Got wrong size: %d\n", size);
+ }
+
+ RegDeleteKeyA(subkey, "");
+}
+
START_TEST(registry)
{
setup_main_key();
@@ -758,6 +874,7 @@ START_TEST(registry)
test_reg_create_key();
test_reg_close_key();
test_reg_delete_key();
+ test_reg_query_value();
/* SaveKey/LoadKey require the SE_BACKUP_NAME privilege to be set */
if (set_privileges(SE_BACKUP_NAME, TRUE) &&
More information about the wine-cvs
mailing list