Piotr Caban : wininet: Added tests for entries with identical hash key.

Alexandre Julliard julliard at winehq.org
Mon Sep 24 16:04:28 CDT 2012


Module: wine
Branch: master
Commit: 71511c9fc55a32b43aaebcb4f29d77d08d24b072
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=71511c9fc55a32b43aaebcb4f29d77d08d24b072

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Sep 24 14:56:56 2012 +0200

wininet: Added tests for entries with identical hash key.

---

 dlls/wininet/tests/urlcache.c |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/dlls/wininet/tests/urlcache.c b/dlls/wininet/tests/urlcache.c
index 4118220..c2e355a 100644
--- a/dlls/wininet/tests/urlcache.c
+++ b/dlls/wininet/tests/urlcache.c
@@ -31,6 +31,8 @@
 
 #define TEST_URL    "http://urlcachetest.winehq.org/index.html"
 #define TEST_URL1   "Visited: user at http://urlcachetest.winehq.org/index.html"
+#define TEST_HASH_COLLISIONS1 "Visited: http://winehq.org/doc0.html"
+#define TEST_HASH_COLLISIONS2 "Visited: http://winehq.org/doc75651909.html"
 
 static BOOL (WINAPI *pDeleteUrlCacheEntryA)(LPCSTR);
 static BOOL (WINAPI *pUnlockUrlCacheEntryFileA)(LPCSTR,DWORD);
@@ -751,6 +753,43 @@ static void test_urlcacheA(void)
         ok(ret, "DeleteUrlCacheEntryA failed with error %d\n", GetLastError());
         check_file_not_exists(filenameA);
     }
+
+    /* Test if files with identical hash keys are handled correctly */
+    ret = CommitUrlCacheEntryA(TEST_HASH_COLLISIONS1, NULL, filetime_zero, filetime_zero, NORMAL_CACHE_ENTRY, NULL, 0, "html", NULL);
+    ok(ret, "CommitUrlCacheEntry failed with error %d\n", GetLastError());
+    ret = CommitUrlCacheEntryA(TEST_HASH_COLLISIONS2, NULL, filetime_zero, filetime_zero, NORMAL_CACHE_ENTRY, NULL, 0, "html", NULL);
+    ok(ret, "CommitUrlCacheEntry failed with error %d\n", GetLastError());
+
+    cbCacheEntryInfo = 0;
+    ret = GetUrlCacheEntryInfo(TEST_HASH_COLLISIONS1, NULL, &cbCacheEntryInfo);
+    ok(!ret, "GetUrlCacheEntryInfo should have failed\n");
+    ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
+            "expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
+    lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
+    ret = GetUrlCacheEntryInfo(TEST_HASH_COLLISIONS1, lpCacheEntryInfo, &cbCacheEntryInfo);
+    ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
+    ok(!strcmp(lpCacheEntryInfo->lpszSourceUrlName, TEST_HASH_COLLISIONS1),
+            "got incorrect entry: %s\n", lpCacheEntryInfo->lpszSourceUrlName);
+    HeapFree(GetProcessHeap(), 0, lpCacheEntryInfo);
+
+    cbCacheEntryInfo = 0;
+    ret = GetUrlCacheEntryInfo(TEST_HASH_COLLISIONS2, NULL, &cbCacheEntryInfo);
+    ok(!ret, "GetUrlCacheEntryInfo should have failed\n");
+    ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
+            "expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
+    lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
+    ret = GetUrlCacheEntryInfo(TEST_HASH_COLLISIONS2, lpCacheEntryInfo, &cbCacheEntryInfo);
+    ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
+    ok(!strcmp(lpCacheEntryInfo->lpszSourceUrlName, TEST_HASH_COLLISIONS2),
+            "got incorrect entry: %s\n", lpCacheEntryInfo->lpszSourceUrlName);
+    HeapFree(GetProcessHeap(), 0, lpCacheEntryInfo);
+
+    if (pDeleteUrlCacheEntryA) {
+        ret = pDeleteUrlCacheEntryA(TEST_HASH_COLLISIONS1);
+        ok(ret, "DeleteUrlCacheEntry failed: %d\n", GetLastError());
+        ret = pDeleteUrlCacheEntryA(TEST_HASH_COLLISIONS2);
+        ok(ret, "DeleteUrlCacheEntry failed: %d\n", GetLastError());
+    }
 }
 
 static void test_FindCloseUrlCache(void)




More information about the wine-cvs mailing list