[PATCH 5/6] reg/tests: Add more export tests
Hugh McMaster
hugh.mcmaster at outlook.com
Fri Oct 13 03:15:29 CDT 2017
Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
---
programs/reg/tests/reg.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 82 insertions(+)
diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c
index 48cf8f2581..c1011ec375 100644
--- a/programs/reg/tests/reg.c
+++ b/programs/reg/tests/reg.c
@@ -4332,6 +4332,7 @@ static void test_export(void)
LONG err;
DWORD r, os_version, major_version, minor_version, dword;
HKEY hkey, subkey;
+ BYTE hex[4];
const char *empty_key_test =
"\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
@@ -4381,6 +4382,32 @@ static void test_export(void)
"\"Value 2\"=\"I was added first!\"\r\n"
"\"Value 1\"=\"I was added second!\"\r\n\r\n";
+ const char *empty_hex_test =
+ "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
+ "\"Wine1a\"=hex(0):\r\n"
+ "\"Wine1b\"=\"\"\r\n"
+ "\"Wine1c\"=hex(2):\r\n"
+ "\"Wine1d\"=hex:\r\n"
+ "\"Wine1e\"=hex(4):\r\n"
+ "\"Wine1f\"=hex(7):\r\n"
+ "\"Wine1g\"=hex(100):\r\n"
+ "\"Wine1h\"=hex(abcd):\r\n\r\n";
+
+ const char *empty_hex_test2 =
+ "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
+ "\"Wine2a\"=\"\"\r\n"
+ "\"Wine2b\"=hex:\r\n"
+ "\"Wine2c\"=hex(4):\r\n\r\n";
+
+ const char *hex_types_test =
+ "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\r\n"
+ "\"Wine3a\"=\"Value\"\r\n"
+ "\"Wine3b\"=hex:12,34,56,78\r\n"
+ "\"Wine3c\"=dword:10203040\r\n\r\n";
+
err = RegDeleteKeyA(HKEY_CURRENT_USER, KEY_BASE);
ok(err == ERROR_SUCCESS || err == ERROR_FILE_NOT_FOUND, "got %d\n", err);
@@ -4520,6 +4547,61 @@ static void test_export(void)
todo_wine ok(compare_export("file.reg", value_order_test, 0), "compare_export() failed\n");
delete_key(HKEY_CURRENT_USER, KEY_BASE);
+
+ /* Test registry export with empty hex data */
+ add_key(HKEY_CURRENT_USER, KEY_BASE, &hkey);
+ add_value(hkey, "Wine1a", REG_NONE, NULL, 0);
+ add_value(hkey, "Wine1b", REG_SZ, NULL, 0);
+ add_value(hkey, "Wine1c", REG_EXPAND_SZ, NULL, 0);
+ add_value(hkey, "Wine1d", REG_BINARY, NULL, 0);
+ add_value(hkey, "Wine1e", REG_DWORD, NULL, 0);
+ add_value(hkey, "Wine1f", REG_MULTI_SZ, NULL, 0);
+ add_value(hkey, "Wine1g", 0x100, NULL, 0);
+ add_value(hkey, "Wine1h", 0xabcd, NULL, 0);
+ RegCloseKey(hkey);
+
+ run_reg_exe("reg export HKEY_CURRENT_USER\\" KEY_BASE " file.reg", &r);
+ todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
+ todo_wine ok(compare_export("file.reg", empty_hex_test, 0), "compare_export() failed\n");
+
+ delete_key(HKEY_CURRENT_USER, KEY_BASE);
+
+ /* Test registry export after importing alternative registry data types */
+ test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine2a\"=hex(1):\n"
+ "\"Wine2b\"=hex(3):\n"
+ "\"Wine2c\"=hex(4):\n\n", &r);
+ open_key(HKEY_CURRENT_USER, KEY_BASE, 0, &hkey);
+ verify_reg(hkey, "Wine2a", REG_SZ, NULL, 0, 0);
+ verify_reg(hkey, "Wine2b", REG_BINARY, NULL, 0, 0);
+ verify_reg(hkey, "Wine2c", REG_DWORD, NULL, 0, 0);
+ RegCloseKey(hkey);
+
+ run_reg_exe("reg export HKEY_CURRENT_USER\\" KEY_BASE " file.reg", &r);
+ todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
+ todo_wine ok(compare_export("file.reg", empty_hex_test2, 0), "compare_export() failed\n");
+
+ delete_key(HKEY_CURRENT_USER, KEY_BASE);
+
+ test_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n"
+ "[HKEY_CURRENT_USER\\" KEY_BASE "]\n"
+ "\"Wine3a\"=hex(1):56,00,61,00,6c,00,75,00,65,00,00,00\n"
+ "\"Wine3b\"=hex(3):12,34,56,78\n"
+ "\"Wine3c\"=hex(4):40,30,20,10\n\n", &r);
+ open_key(HKEY_CURRENT_USER, KEY_BASE, 0, &hkey);
+ verify_reg(hkey, "Wine3a", REG_SZ, "Value", 6, 0);
+ memcpy(hex, "\x12\x34\x56\x78", 4);
+ verify_reg(hkey, "Wine3b", REG_BINARY, hex, 4, 0);
+ dword = 0x10203040;
+ verify_reg(hkey, "Wine3c", REG_DWORD, &dword, sizeof(dword), 0);
+ RegCloseKey(hkey);
+
+ run_reg_exe("reg export HKEY_CURRENT_USER\\" KEY_BASE " file.reg", &r);
+ todo_wine ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r);
+ todo_wine ok(compare_export("file.reg", hex_types_test, 0), "compare_export() failed\n");
+
+ delete_key(HKEY_CURRENT_USER, KEY_BASE);
}
START_TEST(reg)
--
2.14.2
More information about the wine-patches
mailing list