[PATCH] urlmon/tests: Add ZoneEnumerator tests
Detlef Riekenberg
wine.dev at web.de
Sun Jun 21 17:59:46 CDT 2009
---
dlls/urlmon/tests/sec_mgr.c | 121 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 121 insertions(+), 0 deletions(-)
diff --git a/dlls/urlmon/tests/sec_mgr.c b/dlls/urlmon/tests/sec_mgr.c
index fe27f62..280f6da 100644
--- a/dlls/urlmon/tests/sec_mgr.c
+++ b/dlls/urlmon/tests/sec_mgr.c
@@ -281,6 +281,76 @@ static void test_polices(void)
IInternetZoneManager_Release(zonemgr);
}
+static void test_CreateZoneEnumerator(void)
+{
+ IInternetZoneManager *zonemgr = NULL;
+ HRESULT hr;
+ DWORD dwEnum;
+ DWORD dwEnum2;
+ DWORD dwCount;
+ DWORD dwCount2;
+
+ hr = CoInternetCreateZoneManager(NULL, &zonemgr, 0);
+ ok(hr == S_OK, "CoInternetCreateZoneManager result: 0x%x\n", hr);
+ if (FAILED(hr))
+ return;
+
+ dwEnum=0xdeadbeef;
+ hr = IInternetZoneManager_CreateZoneEnumerator(zonemgr, &dwEnum, NULL, 0);
+ ok((hr == E_INVALIDARG) && (dwEnum == 0xdeadbeef),
+ "got 0x%x with 0x%x (expected E_INVALIDARG with 0xdeadbeef)\n", hr, dwEnum);
+
+ dwCount=0xdeadbeef;
+ hr = IInternetZoneManager_CreateZoneEnumerator(zonemgr, NULL, &dwCount, 0);
+ ok((hr == E_INVALIDARG) && (dwCount == 0xdeadbeef),
+ "got 0x%x and 0x%x (expected E_INVALIDARG and 0xdeadbeef)\n", hr, dwCount);
+
+ dwEnum=0xdeadbeef;
+ dwCount=0xdeadbeef;
+ hr = IInternetZoneManager_CreateZoneEnumerator(zonemgr, &dwEnum, &dwCount, 0xffffffff);
+ ok((hr == E_INVALIDARG) && (dwEnum == 0xdeadbeef) && (dwCount == 0xdeadbeef),
+ "got 0x%x with 0x%x and 0x%x (expected E_INVALIDARG with 0xdeadbeef and 0xdeadbeef)\n",
+ hr, dwEnum, dwCount);
+
+ dwEnum=0xdeadbeef;
+ dwCount=0xdeadbeef;
+ hr = IInternetZoneManager_CreateZoneEnumerator(zonemgr, &dwEnum, &dwCount, 1);
+ ok((hr == E_INVALIDARG) && (dwEnum == 0xdeadbeef) && (dwCount == 0xdeadbeef),
+ "got 0x%x with 0x%x and 0x%x (expected E_INVALIDARG with 0xdeadbeef and 0xdeadbeef)\n",
+ hr, dwEnum, dwCount);
+
+ dwEnum=0xdeadbeef;
+ dwCount=0xdeadbeef;
+ /* Normal use */
+ hr = IInternetZoneManager_CreateZoneEnumerator(zonemgr, &dwEnum, &dwCount, 0);
+ ok(hr == S_OK, "got 0x%x (expected S_OK)\n", hr);
+
+ if (SUCCEEDED(hr)) {
+ dwEnum2=0xdeadbeef;
+ dwCount2=0xdeadbeef;
+ hr = IInternetZoneManager_CreateZoneEnumerator(zonemgr, &dwEnum2, &dwCount2, 0);
+ ok(hr == S_OK, "got 0x%x (expected S_OK)\n", hr);
+ if (SUCCEEDED(hr)) {
+ /* native urlmon has an incrementing counter for dwEnum */
+ hr = IInternetZoneManager_DestroyZoneEnumerator(zonemgr, dwEnum2);
+ ok(hr == S_OK, "got 0x%x (expected S_OK)\n", hr);
+ }
+
+ hr = IInternetZoneManager_DestroyZoneEnumerator(zonemgr, dwEnum);
+ ok(hr == S_OK, "got 0x%x (expected S_OK)\n", hr);
+
+ if (0) {
+ /* Destroy the Enumerator twice is detected and handled in native urlmon */
+ hr = IInternetZoneManager_DestroyZoneEnumerator(zonemgr, dwEnum);
+ ok((hr == E_INVALIDARG), "got 0x%x (expected E_INVALIDARG)\n", hr);
+ }
+ }
+
+ /* ::Release succeed also, when a ::DestroyZoneEnumerator is missing */
+ hr = IInternetZoneManager_Release(zonemgr);
+ ok(hr == S_OK, "got 0x%x (expected S_OK)\n", hr);
+}
+
static void test_GetZoneActionPolicy(void)
{
IInternetZoneManager *zonemgr = NULL;
@@ -321,6 +391,55 @@ static void test_GetZoneActionPolicy(void)
IInternetZoneManager_Release(zonemgr);
}
+static void test_GetZoneAt(void)
+{
+ IInternetZoneManager *zonemgr = NULL;
+ HRESULT hr;
+ DWORD dwEnum;
+ DWORD dwCount;
+ DWORD dwZone;
+ DWORD i;
+
+ hr = CoInternetCreateZoneManager(NULL, &zonemgr, 0);
+ ok(hr == S_OK, "CoInternetCreateZoneManager result: 0x%x\n", hr);
+ if (FAILED(hr))
+ return;
+
+ hr = IInternetZoneManager_CreateZoneEnumerator(zonemgr, &dwEnum, &dwCount, 0);
+ if (FAILED(hr))
+ goto cleanup;
+
+ if (0) {
+ /* this crash with native urlmon */
+ hr = IInternetZoneManager_GetZoneAt(zonemgr, dwEnum, 0, NULL);
+ }
+
+ dwZone = 0xdeadbeef;
+ hr = IInternetZoneManager_GetZoneAt(zonemgr, 0xdeadbeef, 0, &dwZone);
+ ok(hr == E_INVALIDARG,
+ "got 0x%x with 0x%x (expected E_INVALIDARG)\n", hr, dwZone);
+
+ for (i = 0; i < dwCount; i++)
+ {
+ dwZone = 0xdeadbeef;
+ hr = IInternetZoneManager_GetZoneAt(zonemgr, dwEnum, i, &dwZone);
+ ok(hr == S_OK, "#%d: got x%x with %d (expected S_OK)\n", i, hr, dwZone);
+ }
+
+ dwZone = 0xdeadbeef;
+ /* MSDN (index .. must be .. less than or equal to) is wrong */
+ hr = IInternetZoneManager_GetZoneAt(zonemgr, dwEnum, dwCount, &dwZone);
+ ok(hr == E_INVALIDARG,
+ "got 0x%x with 0x%x (expected E_INVALIDARG)\n", hr, dwZone);
+
+ hr = IInternetZoneManager_DestroyZoneEnumerator(zonemgr, dwEnum);
+ ok(hr == S_OK, "got 0x%x (expected S_OK)\n", hr);
+
+cleanup:
+ hr = IInternetZoneManager_Release(zonemgr);
+ ok(hr == S_OK, "got 0x%x (expected S_OK)\n", hr);
+}
+
static void test_GetZoneAttributes(void)
{
IInternetZoneManager *zonemgr = NULL;
@@ -383,7 +502,9 @@ START_TEST(sec_mgr)
test_SecurityManager();
test_polices();
+ test_CreateZoneEnumerator();
test_GetZoneActionPolicy();
+ test_GetZoneAt();
test_GetZoneAttributes();
OleUninitialize();
--
1.5.4.3
--=-ijucojykc5gSI9lFPFRz--
More information about the wine-patches
mailing list