[PATCH] wininet/tests: Add some tests for GetUrlCacheConfigInfo.

Dmitry Timoshkov dmitry at baikal.ru
Tue Jan 8 22:50:23 CST 2019


Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
 dlls/wininet/tests/Makefile.in |   2 +-
 dlls/wininet/tests/urlcache.c  | 103 +++++++++++++++++++++++++++++++++
 2 files changed, 104 insertions(+), 1 deletion(-)

diff --git a/dlls/wininet/tests/Makefile.in b/dlls/wininet/tests/Makefile.in
index cf1a86acd8..ae18bb72fa 100644
--- a/dlls/wininet/tests/Makefile.in
+++ b/dlls/wininet/tests/Makefile.in
@@ -1,5 +1,5 @@
 TESTDLL   = wininet.dll
-IMPORTS   = wininet crypt32 ws2_32 user32 advapi32
+IMPORTS   = wininet crypt32 ws2_32 user32 advapi32 shell32
 
 C_SRCS = \
 	ftp.c \
diff --git a/dlls/wininet/tests/urlcache.c b/dlls/wininet/tests/urlcache.c
index 3799500489..acd4ff247c 100644
--- a/dlls/wininet/tests/urlcache.c
+++ b/dlls/wininet/tests/urlcache.c
@@ -18,6 +18,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -27,6 +30,7 @@
 #include "winnls.h"
 #include "wininet.h"
 #include "winineti.h"
+#include "shlobj.h"
 
 #include "wine/test.h"
 
@@ -1100,6 +1104,104 @@ static void test_trailing_slash(void)
     DeleteFileA(filename);
 }
 
+static void get_cache_path(DWORD flags, char path[MAX_PATH], char path_win8[MAX_PATH])
+{
+    BOOL ret;
+    int folder = -1;
+    const char *suffix = "";
+    const char *suffix_win8 = "";
+
+    switch (flags)
+    {
+    case 0:
+    case CACHE_CONFIG_CONTENT_PATHS_FC:
+        folder = CSIDL_INTERNET_CACHE;
+        suffix = "\\Content.IE5\\";
+        suffix_win8 = "\\IE\\";
+        break;
+
+    case CACHE_CONFIG_COOKIES_PATHS_FC:
+        folder = CSIDL_COOKIES;
+        suffix = "\\";
+        suffix_win8 = "\\";
+        break;
+
+    case CACHE_CONFIG_HISTORY_PATHS_FC:
+        folder = CSIDL_HISTORY;
+        suffix = "\\History.IE5\\";
+        suffix_win8 = "\\History.IE5\\";
+        break;
+
+    default:
+        ok(0, "unexpected flags %#x\n", flags);
+        break;
+    }
+
+    ret = SHGetSpecialFolderPathA(0, path, folder, FALSE);
+    ok(ret, "SHGetSpecialFolderPath error %u\n", GetLastError());
+
+    strcpy(path_win8, path);
+    strcat(path_win8, suffix_win8);
+
+    strcat(path, suffix);
+}
+
+static void test_GetUrlCacheConfigInfo(void)
+{
+    INTERNET_CACHE_CONFIG_INFOA info;
+    struct
+    {
+        INTERNET_CACHE_CONFIG_INFOA *info;
+        DWORD dwStructSize;
+        DWORD flags;
+        BOOL ret;
+        DWORD error;
+    } td[] =
+    {
+#if 0 /* crashes under Vista */
+        { NULL, 0, 0, FALSE, ERROR_INVALID_PARAMETER },
+#endif
+        { &info, 0, 0, TRUE },
+        { &info, sizeof(info) - 1, 0, TRUE },
+        { &info, sizeof(info) + 1, 0, TRUE },
+        { &info, 0, CACHE_CONFIG_CONTENT_PATHS_FC, TRUE },
+        { &info, sizeof(info), CACHE_CONFIG_CONTENT_PATHS_FC, TRUE },
+        { &info, 0, CACHE_CONFIG_COOKIES_PATHS_FC, TRUE },
+        { &info, sizeof(info), CACHE_CONFIG_COOKIES_PATHS_FC, TRUE },
+        { &info, 0, CACHE_CONFIG_HISTORY_PATHS_FC, TRUE },
+        { &info, sizeof(info), CACHE_CONFIG_HISTORY_PATHS_FC, TRUE },
+    };
+    int i;
+    BOOL ret;
+
+    for (i = 0; i < ARRAY_SIZE(td); i++)
+    {
+        if (td[i].info)
+        {
+            memset(&info, 0, sizeof(*td[i].info));
+            info.dwStructSize = td[i].dwStructSize;
+        }
+
+        SetLastError(0xdeadbeef);
+        ret = GetUrlCacheConfigInfoA(td[i].info, NULL, td[i].flags);
+todo_wine
+        ok(ret == td[i].ret, "%d: expected %d, got %d\n", i, td[i].ret, ret);
+        if (!ret)
+todo_wine
+            ok(GetLastError() == td[i].error, "%d: expected %u, got %u\n", i, td[i].error, GetLastError());
+        else
+        {
+            char path[MAX_PATH], path_win8[MAX_PATH];
+
+            get_cache_path(td[i].flags, path, path_win8);
+
+            ok(info.dwStructSize == td[i].dwStructSize, "got %u\n", info.dwStructSize);
+            ok(!lstrcmpA(info.u.s.CachePath, path) || !lstrcmpA(info.u.s.CachePath, path_win8),
+               "%d: expected %s or %s, got %s\n", i, path, path_win8, info.u.s.CachePath);
+        }
+    }
+}
+
 START_TEST(urlcache)
 {
     HMODULE hdll;
@@ -1124,4 +1226,5 @@ START_TEST(urlcache)
     test_FindCloseUrlCache();
     test_GetDiskInfoA();
     test_trailing_slash();
+    test_GetUrlCacheConfigInfo();
 }
-- 
2.20.1




More information about the wine-devel mailing list