advapi32: Test RegSetValueEx[AW]() for setting some sequential
strings as one.
Saulius Krasuckas
saulius2 at ar.fi.lt
Wed Jun 7 13:45:27 CDT 2006
* Now with excluded version checking logic.
* And constify permanent strings.
---
dlls/advapi32/tests/registry.c | 65 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 65 insertions(+), 0 deletions(-)
6fd95c2d202d5a6b94535dcc2bf4445c4e69ee5f
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c
index 44b0197..feb1edb 100644
--- a/dlls/advapi32/tests/registry.c
+++ b/dlls/advapi32/tests/registry.c
@@ -60,6 +60,70 @@ static void setup_main_key(void)
assert (!RegCreateKeyA( HKEY_CURRENT_USER, "Software\\Wine\\Test", &hkey_main ));
}
+#define test_hkey_main_Value(name, string, AW) \
+do { \
+ ret = RegQueryValueEx##AW(hkey_main, name##AW, NULL, &type, NULL, &cbData); \
+ GLE = GetLastError(); \
+ ok(ret == ERROR_SUCCESS, "RegQueryValueEx%s failed: %ld, GLE=%ld\n", #AW, ret, GLE); \
+ if(GLE == ERROR_CALL_NOT_IMPLEMENTED) break; \
+ \
+ str_byte_len = (lstrlen##AW(string##AW) + 1) * sizeof(string##AW[0]); \
+ full_byte_len = sizeof(string##AW); \
+ ok(type == REG_SZ, "RegQueryValueEx%s returned type %ld\n", #AW, type); \
+ ok(cbData == full_byte_len || cbData == str_byte_len, \
+ "cbData=%ld instead of %d or %ld\n", cbData, full_byte_len, str_byte_len); \
+} while (0)
+
+static void test_set_value(void)
+{
+ DWORD ret, GLE=0;
+ DWORD type, cbData, str_byte_len;
+ int full_byte_len;
+
+ const WCHAR name1W[] = {'C','l','e','a','n','S','i','n','g','l','e','S','t','r','i','n','g', 0};
+ const WCHAR name2W[] = {'S','o','m','e','I','n','t','r','a','Z','e','r','o','e','d','S','t','r','i','n','g', 0};
+ const WCHAR string1W[] = {'T','h','i','s','N','e','v','e','r','B','r','e','a','k','s', 0};
+ const WCHAR string2W[] = {'T','h','i','s', 0 ,'B','r','e','a','k','s', 0 , 0 ,'A', 0 , 0 , 0 , 0 ,'L','o','t', 0 , 0 , 0 , 0 , 0};
+
+ const char name1A[] = "CleanSingleString";
+ const char name2A[] = "SomeIntraZeroedString";
+ const char string1A[] = "ThisNeverBreaks";
+ const char string2A[] = "This\0Breaks\0\0A\0\0\0Lot\0\0\0\0\0";
+
+#define A
+#define W
+
+ /* test RegSetValueExA with normal string */
+ ret = RegSetValueExA(hkey_main, name1A, 0, REG_SZ, (LPBYTE)string1A, sizeof(string1A));
+ ok(ret == ERROR_SUCCESS, "RegSetValueExA failed: %ld, GLE=%ld\n", ret, GetLastError());
+ test_hkey_main_Value(name1, string1, A);
+ test_hkey_main_Value(name1, string1, W);
+
+ /* test RegSetValueExA with intrazeroed string */
+ ret = RegSetValueExA(hkey_main, name2A, 0, REG_SZ, (LPBYTE)string2A, sizeof(string2A));
+ ok(ret == ERROR_SUCCESS, "RegSetValueExA failed: %ld, GLE=%ld\n", ret, GetLastError());
+ test_hkey_main_Value(name2, string2, A);
+ test_hkey_main_Value(name2, string2, W);
+
+ if(GLE == ERROR_CALL_NOT_IMPLEMENTED) return;
+
+ /* test RegSetValueExW with normal string */
+ ret = RegSetValueExW(hkey_main, name1W, 0, REG_SZ, (LPBYTE)string1W, sizeof(string1W));
+ ok(ret == ERROR_SUCCESS, "RegSetValueExW failed: %ld, GLE=%ld\n", ret, GetLastError());
+ test_hkey_main_Value(name1, string1, A);
+ test_hkey_main_Value(name1, string1, W);
+
+ /* test RegSetValueExW with intrazeroed string */
+ ret = RegSetValueExW(hkey_main, name2W, 0, REG_SZ, (LPBYTE)string2W, sizeof(string2W));
+ ok(ret == ERROR_SUCCESS, "RegSetValueExW failed: %ld, GLE=%ld\n", ret, GetLastError());
+ test_hkey_main_Value(name2, string2, A);
+ test_hkey_main_Value(name2, string2, W);
+
+#undef W
+#undef A
+}
+#undef test_hkey_main_Value
+
static void create_test_entries(void)
{
DWORD qw[2] = { 0x12345678, 0x87654321 };
@@ -654,6 +718,7 @@ static void test_regconnectregistry( voi
START_TEST(registry)
{
setup_main_key();
+ test_set_value();
create_test_entries();
test_enum_value();
test_query_value_ex();
--
1.3.2
More information about the wine-patches
mailing list