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