https://git.reactos.org/?p=reactos.git;a=commitdiff;h=7998a3f086378e0c27196…
commit 7998a3f086378e0c27196574afb550fc678ec150
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Fri Jan 19 00:31:47 2018 +0100
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Fri Jan 19 00:31:47 2018 +0100
[HNETCFG_WINETEST] Import from Wine 3.0. CORE-14225
---
modules/rostests/winetests/CMakeLists.txt | 1 +
modules/rostests/winetests/hnetcfg/CMakeLists.txt | 7 ++
modules/rostests/winetests/hnetcfg/policy.c | 127 ++++++++++++++++++++++
modules/rostests/winetests/hnetcfg/testlist.c | 12 ++
4 files changed, 147 insertions(+)
diff --git a/modules/rostests/winetests/CMakeLists.txt
b/modules/rostests/winetests/CMakeLists.txt
index 52d1114c73..01ab53e093 100644
--- a/modules/rostests/winetests/CMakeLists.txt
+++ b/modules/rostests/winetests/CMakeLists.txt
@@ -31,6 +31,7 @@ add_subdirectory(fusion)
add_subdirectory(gdi32)
add_subdirectory(gdiplus)
add_subdirectory(hlink)
+add_subdirectory(hnetcfg)
add_subdirectory(imagehlp)
add_subdirectory(imm32)
add_subdirectory(inetcomm)
diff --git a/modules/rostests/winetests/hnetcfg/CMakeLists.txt
b/modules/rostests/winetests/hnetcfg/CMakeLists.txt
new file mode 100644
index 0000000000..396c20e2b8
--- /dev/null
+++ b/modules/rostests/winetests/hnetcfg/CMakeLists.txt
@@ -0,0 +1,7 @@
+
+add_definitions(-DUSE_WINE_TODOS)
+add_executable(hnetcfg_winetest policy.c testlist.c)
+target_link_libraries(hnetcfg_winetest uuid)
+set_module_type(hnetcfg_winetest win32cui)
+add_importlibs(hnetcfg_winetest ole32 msvcrt kernel32)
+add_rostests_file(TARGET hnetcfg_winetest)
diff --git a/modules/rostests/winetests/hnetcfg/policy.c
b/modules/rostests/winetests/hnetcfg/policy.c
new file mode 100644
index 0000000000..7b5bef008c
--- /dev/null
+++ b/modules/rostests/winetests/hnetcfg/policy.c
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2016 Alistair Leslie-Hughes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#define COBJMACROS
+#include <stdio.h>
+
+#include "windows.h"
+#include "ole2.h"
+#include "oleauto.h"
+#include "olectl.h"
+#include "dispex.h"
+
+#include "wine/test.h"
+
+#include "netfw.h"
+
+static void test_policy2_rules(INetFwPolicy2 *policy2)
+{
+ HRESULT hr;
+ INetFwRules *rules, *rules2;
+ INetFwServiceRestriction *restriction;
+
+ hr = INetFwPolicy2_QueryInterface(policy2, &IID_INetFwRules,
(void**)&rules);
+ ok(hr == E_NOINTERFACE, "got 0x%08x\n", hr);
+
+ hr = INetFwPolicy2_get_Rules(policy2, &rules);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ hr = INetFwPolicy2_get_Rules(policy2, &rules2);
+ ok(hr == S_OK, "got %08x\n", hr);
+ ok(rules == rules2, "Different pointers\n");
+
+ hr = INetFwPolicy2_get_ServiceRestriction(policy2, &restriction);
+ todo_wine ok(hr == S_OK, "got %08x\n", hr);
+ if(hr == S_OK)
+ {
+ INetFwRules *rules3;
+
+ hr = INetFwServiceRestriction_get_Rules(restriction, &rules3);
+ ok(hr == S_OK, "got %08x\n", hr);
+ ok(rules != rules3, "same pointers\n");
+
+ if(rules3)
+ INetFwRules_Release(rules3);
+ INetFwServiceRestriction_Release(restriction);
+ }
+
+ INetFwRules_Release(rules);
+ INetFwRules_Release(rules2);
+}
+
+static void test_interfaces(void)
+{
+ INetFwMgr *manager;
+ INetFwPolicy *policy;
+ INetFwPolicy2 *policy2;
+ HRESULT hr;
+
+ hr = CoCreateInstance(&CLSID_NetFwMgr, NULL,
CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
+ &IID_INetFwMgr, (void**)&manager);
+ ok(hr == S_OK, "NetFwMgr create failed: %08x\n", hr);
+
+ hr = INetFwMgr_QueryInterface(manager, &IID_INetFwPolicy, (void**)&policy);
+ ok(hr == E_NOINTERFACE, "got 0x%08x\n", hr);
+
+ hr = INetFwMgr_QueryInterface(manager, &IID_INetFwPolicy2,
(void**)&policy2);
+ ok(hr == E_NOINTERFACE, "got 0x%08x\n", hr);
+
+ hr = INetFwMgr_get_LocalPolicy(manager, &policy);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ hr = INetFwPolicy_QueryInterface(policy, &IID_INetFwPolicy2,
(void**)&policy2);
+ ok(hr == E_NOINTERFACE, "got 0x%08x\n", hr);
+
+ INetFwPolicy_Release(policy);
+
+ hr = CoCreateInstance(&CLSID_NetFwPolicy2, NULL,
CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
+ &IID_INetFwPolicy2, (void**)&policy2);
+ if(hr == S_OK)
+ {
+ test_policy2_rules(policy2);
+
+ INetFwPolicy2_Release(policy2);
+ }
+ else
+ win_skip("NetFwPolicy2 object is not supported: %08x\n", hr);
+
+ INetFwMgr_Release(manager);
+}
+
+START_TEST(policy)
+{
+ INetFwMgr *manager;
+ HRESULT hr;
+
+ CoInitialize(NULL);
+
+ hr = CoCreateInstance(&CLSID_NetFwMgr, NULL,
CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
+ &IID_INetFwMgr, (void**)&manager);
+ if(FAILED(hr))
+ {
+ win_skip("NetFwMgr object is not supported: %08x\n", hr);
+ CoUninitialize();
+ return;
+ }
+
+ INetFwMgr_Release(manager);
+
+ test_interfaces();
+
+
+ CoUninitialize();
+}
diff --git a/modules/rostests/winetests/hnetcfg/testlist.c
b/modules/rostests/winetests/hnetcfg/testlist.c
new file mode 100644
index 0000000000..4b5b1f1d43
--- /dev/null
+++ b/modules/rostests/winetests/hnetcfg/testlist.c
@@ -0,0 +1,12 @@
+/* Automatically generated file; DO NOT EDIT!! */
+
+#define STANDALONE
+#include <wine/test.h>
+
+extern void func_policy(void);
+
+const struct test winetest_testlist[] =
+{
+ { "policy", func_policy },
+ { 0, 0 }
+};