From: Jonathan Vollebregt Subject: [PATCH v2 5/5] reg.exe/tests: Add REG_BINARY tests for reg add Message-Id: <1413885287-19090-5-git-send-email-jnvsor@gmail.com> Date: Tue, 21 Oct 2014 11:54:47 +0200 Have to add an exception to verify_reg and check it manually because winXP suffixes a 0 nibble while the rest prefix it. --- programs/reg/tests/reg.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c index 91da0e0..1c32ae7 100644 --- a/programs/reg/tests/reg.c +++ b/programs/reg/tests/reg.c @@ -154,6 +154,39 @@ static void test_add(void) ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected %u\n", r, REG_EXIT_SUCCESS); verify_reg(hkey, "expand2", REG_EXPAND_SZ, "", 1, TODO_REG_SIZE); + /* REG_BINARY */ + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin0 /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected %u\n", r, REG_EXIT_SUCCESS); + verify_reg(hkey, "bin0", REG_BINARY, buffer, 0, 0); + + run_reg_exe("reg add HKEY_CURRENT_USER\\" KEY_BASE " /ve /t REG_BINARY /d deadbeef /f", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected %u\n", r, REG_EXIT_SUCCESS); + dword = 0xefbeadde; + verify_reg(hkey, "", REG_BINARY, &dword, sizeof(DWORD), TODO_REG_SIZE); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin1 /f /d 0xDeAdBeEf", &r); + todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u, expected %u\n", r, REG_EXIT_FAILURE); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin2 /f /d x01", &r); + todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u, expected %u\n", r, REG_EXIT_FAILURE); + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin3 /f /d 01x", &r); + todo_wine ok(r == REG_EXIT_FAILURE, "got exit code %u, expected %u\n", r, REG_EXIT_FAILURE); + + run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_BINARY /v bin4 /f /d DeAdBeEf0DD", &r); + ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected %u\n", r, REG_EXIT_SUCCESS); + /* Remaining nibble prefixed */ + buffer[0] = 0x0d; buffer[1] = 0xea; buffer[2] = 0xdb; + buffer[3] = 0xee; buffer[4] = 0xf0; buffer[5] = 0xdd; + /* Remaining nibble suffixed on winXP */ + buffer[6] = 0xde; buffer[7] = 0xad; buffer[8] = 0xbe; + buffer[9] = 0xef; buffer[10] = 0x0d; buffer[11] = 0xd0; + size = 6; + err = RegQueryValueExA(hkey, "bin4", NULL, &type, (void *) (buffer+12), &size); + ok(err == ERROR_SUCCESS, "RegQueryValueEx failed: got %d\n", err); + ok(type == REG_BINARY, "got wrong type %u, expected %u\n", type, REG_BINARY); + todo_wine ok(size == 6, "got wrong size %u, expected %u\n", size, 6); + todo_wine ok(memcmp(buffer, buffer+12, 6) == 0 || + broken(memcmp(buffer+6, buffer+12, 6) == 0 /* WinXP */), "got wrong data\n"); + /* REG_DWORD */ run_reg_exe("reg add HKCU\\" KEY_BASE " /t REG_DWORD /f /d 12345678", &r); ok(r == REG_EXIT_SUCCESS || broken(r == REG_EXIT_FAILURE /* WinXP */), -- 2.1.1