Juan Lang : wininet: Test sticky url cache entries.

Alexandre Julliard julliard at winehq.org
Thu Mar 10 11:30:26 CST 2011


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Mar  7 17:18:50 2011 -0800

wininet: Test sticky url cache entries.

---

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

diff --git a/dlls/wininet/tests/urlcache.c b/dlls/wininet/tests/urlcache.c
index 2620c04..162d385 100644
--- a/dlls/wininet/tests/urlcache.c
+++ b/dlls/wininet/tests/urlcache.c
@@ -265,6 +265,8 @@ static void test_urlcacheA(void)
        broken(lpCacheEntryInfo->CacheEntryType == NORMAL_CACHE_ENTRY /* NT4/W2k */),
        "expected type NORMAL_CACHE_ENTRY|URLHISTORY_CACHE_ENTRY, got %08x\n",
        lpCacheEntryInfo->CacheEntryType);
+    ok(!lpCacheEntryInfo->dwExemptDelta, "expected dwExemptDelta 0, got %d\n",
+       lpCacheEntryInfo->dwExemptDelta);
     HeapFree(GetProcessHeap(), 0, lpCacheEntryInfo);
 
     /* A subsequent commit with a different time/type doesn't change the type */
@@ -502,6 +504,106 @@ static void test_urlcacheA(void)
     /* and the file should be untouched. */
     check_file_exists(filenameA);
     DeleteFileA(filenameA);
+
+    /* Try creating a sticky entry.  Unlike non-sticky entries, the filename
+     * must have been set already.
+     */
+    SetLastError(0xdeadbeef);
+    ret = CommitUrlCacheEntry(TEST_URL, NULL, filetime_zero, filetime_zero,
+            STICKY_CACHE_ENTRY, (LPBYTE)ok_header, strlen(ok_header), "html",
+            NULL);
+    todo_wine {
+    ok(!ret, "expected failure\n");
+    ok(GetLastError() == ERROR_INVALID_PARAMETER,
+       "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+    }
+    SetLastError(0xdeadbeef);
+    ret = CommitUrlCacheEntry(TEST_URL, NULL, filetime_zero, filetime_zero,
+            NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY,
+            (LPBYTE)ok_header, strlen(ok_header), "html", NULL);
+    todo_wine {
+    ok(!ret, "expected failure\n");
+    ok(GetLastError() == ERROR_INVALID_PARAMETER,
+       "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+    }
+    ret = CreateUrlCacheEntry(TEST_URL, 0, "html", filenameA, 0);
+    ok(ret, "CreateUrlCacheEntry failed with error %d\n", GetLastError());
+    create_and_write_file(filenameA, &zero_byte, sizeof(zero_byte));
+    ret = CommitUrlCacheEntry(TEST_URL, filenameA, filetime_zero, filetime_zero,
+            NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY,
+            (LPBYTE)ok_header, strlen(ok_header), "html", NULL);
+    ok(ret, "CommitUrlCacheEntry failed with error %d\n", GetLastError());
+    cbCacheEntryInfo = 0;
+    SetLastError(0xdeadbeef);
+    ret = GetUrlCacheEntryInfo(TEST_URL, NULL, &cbCacheEntryInfo);
+    ok(!ret, "RetrieveUrlCacheEntryFile 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_URL, lpCacheEntryInfo, &cbCacheEntryInfo);
+    ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
+    ok(lpCacheEntryInfo->CacheEntryType & (NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY),
+       "expected cache entry type NORMAL_CACHE_ENTRY | STICKY_CACHE_ENTRY, got %d (0x%08x)\n",
+       lpCacheEntryInfo->CacheEntryType, lpCacheEntryInfo->CacheEntryType);
+    todo_wine
+    ok(lpCacheEntryInfo->dwExemptDelta == 86400,
+       "expected dwExemptDelta 864000, got %d\n",
+       lpCacheEntryInfo->dwExemptDelta);
+    HeapFree(GetProcessHeap(), 0, lpCacheEntryInfo);
+    if (pDeleteUrlCacheEntryA)
+    {
+        ret = pDeleteUrlCacheEntryA(TEST_URL);
+        ok(ret, "DeleteUrlCacheEntryA failed with error %d\n", GetLastError());
+        /* When explicitly deleting the cache entry, the file is also deleted */
+        todo_wine
+        check_file_not_exists(filenameA);
+    }
+    /* Test once again, setting the exempt delta via SetUrlCacheEntryInfo */
+    ret = CreateUrlCacheEntry(TEST_URL, 0, "html", filenameA, 0);
+    ok(ret, "CreateUrlCacheEntry failed with error %d\n", GetLastError());
+    create_and_write_file(filenameA, &zero_byte, sizeof(zero_byte));
+    ret = CommitUrlCacheEntry(TEST_URL, filenameA, filetime_zero, filetime_zero,
+            NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY,
+            (LPBYTE)ok_header, strlen(ok_header), "html", NULL);
+    ok(ret, "CommitUrlCacheEntry failed with error %d\n", GetLastError());
+    cbCacheEntryInfo = 0;
+    SetLastError(0xdeadbeef);
+    ret = GetUrlCacheEntryInfo(TEST_URL, NULL, &cbCacheEntryInfo);
+    ok(!ret, "RetrieveUrlCacheEntryFile 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_URL, lpCacheEntryInfo, &cbCacheEntryInfo);
+    ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
+    ok(lpCacheEntryInfo->CacheEntryType & (NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY),
+       "expected cache entry type NORMAL_CACHE_ENTRY | STICKY_CACHE_ENTRY, got %d (0x%08x)\n",
+       lpCacheEntryInfo->CacheEntryType, lpCacheEntryInfo->CacheEntryType);
+    todo_wine
+    ok(lpCacheEntryInfo->dwExemptDelta == 86400,
+       "expected dwExemptDelta 864000, got %d\n",
+       lpCacheEntryInfo->dwExemptDelta);
+    lpCacheEntryInfo->dwExemptDelta = 0;
+    ret = SetUrlCacheEntryInfoA(TEST_URL, lpCacheEntryInfo,
+            CACHE_ENTRY_EXEMPT_DELTA_FC);
+    ok(ret, "SetUrlCacheEntryInfo failed: %d\n", GetLastError());
+    ret = GetUrlCacheEntryInfo(TEST_URL, lpCacheEntryInfo, &cbCacheEntryInfo);
+    ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
+    ok(!lpCacheEntryInfo->dwExemptDelta, "expected dwExemptDelta 0, got %d\n",
+       lpCacheEntryInfo->dwExemptDelta);
+    /* See whether a sticky cache entry has the flag cleared once the exempt
+     * delta is meaningless.
+     */
+    ok(lpCacheEntryInfo->CacheEntryType & (NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY),
+       "expected cache entry type NORMAL_CACHE_ENTRY | STICKY_CACHE_ENTRY, got %d (0x%08x)\n",
+       lpCacheEntryInfo->CacheEntryType, lpCacheEntryInfo->CacheEntryType);
+    HeapFree(GetProcessHeap(), 0, lpCacheEntryInfo);
+    if (pDeleteUrlCacheEntryA)
+    {
+        ret = pDeleteUrlCacheEntryA(TEST_URL);
+        ok(ret, "DeleteUrlCacheEntryA failed with error %d\n", GetLastError());
+        todo_wine
+        check_file_not_exists(filenameA);
+    }
 }
 
 static void test_FindCloseUrlCache(void)




More information about the wine-cvs mailing list