Daniel Lehman : advapi32/tests: Add RegNotifyChangeKeyValue tests.

Alexandre Julliard julliard at winehq.org
Mon May 7 16:34:41 CDT 2018


Module: wine
Branch: master
Commit: 8dee2df6628f301e4c936d35d69ef83b443c81c4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=8dee2df6628f301e4c936d35d69ef83b443c81c4

Author: Daniel Lehman <dlehman at esri.com>
Date:   Thu May  3 11:47:58 2018 -0700

advapi32/tests: Add RegNotifyChangeKeyValue tests.

Signed-off-by: Daniel Lehman <dlehman at esri.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/advapi32/tests/registry.c | 44 ++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 42 insertions(+), 2 deletions(-)

diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c
index 6d8f90a..d975301 100644
--- a/dlls/advapi32/tests/registry.c
+++ b/dlls/advapi32/tests/registry.c
@@ -3484,7 +3484,7 @@ static DWORD WINAPI notify_change_thread(void *arg)
 static void test_RegNotifyChangeKeyValue(void)
 {
     struct notify_data data;
-    HKEY key, subkey;
+    HKEY key, subkey, subsubkey;
     HANDLE thread;
     HANDLE event;
     DWORD dwret;
@@ -3495,7 +3495,7 @@ static void test_RegNotifyChangeKeyValue(void)
     ret = RegCreateKeyA(hkey_main, "TestKey", &key);
     ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
 
-    ret = RegNotifyChangeKeyValue(key, TRUE, REG_NOTIFY_CHANGE_NAME, event, TRUE);
+    ret = RegNotifyChangeKeyValue(key, TRUE, REG_NOTIFY_CHANGE_NAME|REG_NOTIFY_CHANGE_LAST_SET, event, TRUE);
     ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
     dwret = WaitForSingleObject(event, 0);
     ok(dwret == WAIT_TIMEOUT, "expected WAIT_TIMEOUT, got %u\n", dwret);
@@ -3505,7 +3505,47 @@ static void test_RegNotifyChangeKeyValue(void)
     dwret = WaitForSingleObject(event, 0);
     ok(dwret == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", dwret);
 
+    /* watching deeper keys */
+    ret = RegNotifyChangeKeyValue(key, TRUE, REG_NOTIFY_CHANGE_NAME|REG_NOTIFY_CHANGE_LAST_SET, event, TRUE);
+    ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+    dwret = WaitForSingleObject(event, 0);
+    ok(dwret == WAIT_TIMEOUT, "expected WAIT_TIMEOUT, got %u\n", dwret);
+
+    ret = RegCreateKeyA(subkey, "SubKey", &subsubkey);
+    ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+    dwret = WaitForSingleObject(event, 0);
+    ok(dwret == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", dwret);
+
+    /* watching deeper values */
+    ret = RegNotifyChangeKeyValue(key, TRUE, REG_NOTIFY_CHANGE_NAME|REG_NOTIFY_CHANGE_LAST_SET, event, TRUE);
+    ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+    dwret = WaitForSingleObject(event, 0);
+    ok(dwret == WAIT_TIMEOUT, "expected WAIT_TIMEOUT, got %u\n", dwret);
+
+    ret = RegSetValueA(subsubkey, NULL, REG_SZ, "SubSubKeyValue", 0);
+    ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+    dwret = WaitForSingleObject(event, 0);
+    todo_wine ok(dwret == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", dwret);
+
+    /* don't watch deeper values */
+    RegCloseKey(key);
+    ret = RegOpenKeyA(hkey_main, "TestKey", &key);
+    ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+
+    ret = RegNotifyChangeKeyValue(key, FALSE, REG_NOTIFY_CHANGE_NAME|REG_NOTIFY_CHANGE_LAST_SET, event, TRUE);
+    ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+    dwret = WaitForSingleObject(event, 0);
+    ok(dwret == WAIT_TIMEOUT, "expected WAIT_TIMEOUT, got %u\n", dwret);
+
+    ret = RegSetValueA(subsubkey, NULL, REG_SZ, "SubSubKeyValueNEW", 0);
+    ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+    dwret = WaitForSingleObject(event, 0);
+    ok(dwret == WAIT_TIMEOUT, "expected WAIT_TIMEOUT, got %u\n", dwret);
+
+    RegDeleteKeyA(subkey, "SubKey");
     RegDeleteKeyA(key, "SubKey");
+    RegCloseKey(subsubkey);
+    RegCloseKey(subkey);
     RegCloseKey(key);
 
     /* test same thread with REG_NOTIFY_THREAD_AGNOSTIC */




More information about the wine-cvs mailing list