[WININET_WINETEST]
[reactos.git] / rostests / winetests / wininet / internet.c
index 0b5f6ea..7b0ee47 100644 (file)
@@ -41,16 +41,6 @@ static BOOL (WINAPI *pIsDomainLegalCookieDomainW)(LPCWSTR, LPCWSTR);
 static DWORD (WINAPI *pPrivacyGetZonePreferenceW)(DWORD, DWORD, LPDWORD, LPWSTR, LPDWORD);
 static DWORD (WINAPI *pPrivacySetZonePreferenceW)(DWORD, DWORD, DWORD, LPCWSTR);
 
-/* Win9x and WinMe don't have lstrcmpW */
-static int strcmp_ww(const WCHAR *str1, const WCHAR *str2)
-{
-    DWORD len1 = lstrlenW(str1);
-    DWORD len2 = lstrlenW(str2);
-
-    if (len1 != len2) return 1;
-    return memcmp(str1, str2, len1 * sizeof(WCHAR));
-}
-
 /* ############################### */
 
 static void test_InternetCanonicalizeUrlA(void)
@@ -169,6 +159,7 @@ static void test_InternetQueryOptionA(void)
   static const char useragent[] = {"Wininet Test"};
   char *buffer;
   int retval;
+  BOOL res;
 
   hinet = InternetOpenA(useragent,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL, 0);
   ok((hinet != 0x0),"InternetOpen Failed\n");
@@ -247,20 +238,65 @@ static void test_InternetQueryOptionA(void)
   ok(retval == 0,"Got wrong return value %d\n",retval);
   ok(err == ERROR_INSUFFICIENT_BUFFER, "Got wrong error code%d\n",err);
 
-  InternetCloseHandle(hinet);
-
   len = sizeof(val);
-  retval = InternetQueryOptionA(NULL, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &val, &len);
-  ok(retval == TRUE,"Got wrong return value %d\n", retval);
-  ok(len == sizeof(val), "got %d\n", len);
-  ok(val == 2, "got %d\n", val);
+  val = 0xdeadbeef;
+  res = InternetQueryOptionA(hinet, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &val, &len);
+  ok(!res, "InternetQueryOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) succeeded\n");
+  ok(GetLastError() == ERROR_INTERNET_INVALID_OPERATION, "GetLastError() = %u\n", GetLastError());
 
-  len = sizeof(val);
-  retval = InternetQueryOptionA(NULL, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, &val, &len);
-  ok(retval == TRUE,"Got wrong return value %d\n", retval);
-  ok(len == sizeof(val), "got %d\n", len);
-  ok(val == 4, "got %d\n", val);
+  val = 2;
+  res = InternetSetOptionA(hinet, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &val, sizeof(val));
+  ok(!res, "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) succeeded\n");
+  ok(GetLastError() == ERROR_INTERNET_INVALID_OPERATION, "GetLastError() = %u\n", GetLastError());
+
+  InternetCloseHandle(hinet);
+}
+
+static void test_max_conns(void)
+{
+    DWORD len, val;
+    BOOL res;
 
+    len = sizeof(val);
+    val = 0xdeadbeef;
+    res = InternetQueryOptionA(NULL, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &val, &len);
+    ok(res,"Got wrong return value %x\n", res);
+    ok(len == sizeof(val), "got %d\n", len);
+    ok(val == 2, "got %d\n", val);
+
+    len = sizeof(val);
+    val = 0xdeadbeef;
+    res = InternetQueryOptionA(NULL, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, &val, &len);
+    ok(res,"Got wrong return value %x\n", res);
+    ok(len == sizeof(val), "got %d\n", len);
+    ok(val == 4, "got %d\n", val);
+
+    val = 3;
+    res = InternetSetOptionA(NULL, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &val, sizeof(val));
+    ok(res, "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) failed: %x\n", res);
+
+    len = sizeof(val);
+    val = 0xdeadbeef;
+    res = InternetQueryOptionA(NULL, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &val, &len);
+    ok(res,"Got wrong return value %x\n", res);
+    ok(len == sizeof(val), "got %d\n", len);
+    ok(val == 3, "got %d\n", val);
+
+    val = 0;
+    res = InternetSetOptionA(NULL, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &val, sizeof(val));
+    ok(!res || broken(res), /* <= w2k3 */
+       "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER, 0) succeeded\n");
+    if (!res) ok(GetLastError() == ERROR_BAD_ARGUMENTS, "GetLastError() = %u\n", GetLastError());
+
+    val = 2;
+    res = InternetSetOptionA(NULL, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &val, sizeof(val)-1);
+    ok(!res, "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) succeeded\n");
+    ok(GetLastError() == ERROR_INTERNET_BAD_OPTION_LENGTH, "GetLastError() = %u\n", GetLastError());
+
+    val = 2;
+    res = InternetSetOptionA(NULL, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &val, sizeof(val)+1);
+    ok(!res, "InternetSetOptionA(INTERNET_OPTION_MAX_CONNS_PER_SERVER) succeeded\n");
+    ok(GetLastError() == ERROR_INTERNET_BAD_OPTION_LENGTH, "GetLastError() = %u\n", GetLastError());
 }
 
 static void test_get_cookie(void)
@@ -497,7 +533,7 @@ static void test_null(void)
   ok( sz == 1 + lstrlenW(buffer) || sz == lstrlenW(buffer), "sz wrong %d\n", sz);
 
   /* before XP SP2, buffer is "server; server" */
-  ok( !strcmp_ww(szExpect, buffer) || !strcmp_ww(szServer, buffer), "cookie data wrong\n");
+  ok( !lstrcmpW(szExpect, buffer) || !lstrcmpW(szServer, buffer), "cookie data wrong\n");
 
   sz = sizeof(buffer);
   r = InternetQueryOptionA(NULL, INTERNET_OPTION_CONNECTED_STATE, buffer, &sz);
@@ -995,7 +1031,7 @@ static void test_Option_PerConnectionOption(void)
     ret = InternetQueryOptionW(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION,
             &list, &size);
     ok(ret == TRUE, "InternetQueryOption should've succeeded\n");
-    ok(!strcmp_ww(list.pOptions[0].Value.pszValue, proxy_srvW),
+    ok(!lstrcmpW(list.pOptions[0].Value.pszValue, proxy_srvW),
             "Retrieved proxy server should've been %s, was: %s\n",
             wine_dbgstr_w(proxy_srvW), wine_dbgstr_w(list.pOptions[0].Value.pszValue));
     ok(list.pOptions[1].Value.dwValue == PROXY_TYPE_PROXY,
@@ -1321,6 +1357,7 @@ START_TEST(internet)
     test_Option_PerConnectionOption();
     test_Option_PerConnectionOptionA();
     test_InternetErrorDlg();
+    test_max_conns();
 
     if (!pInternetTimeFromSystemTimeA)
         win_skip("skipping the InternetTime tests\n");