summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Rendina <[email protected]>2025-04-08 15:28:56 +0200
committerChristian Rendina <[email protected]>2025-04-08 15:28:56 +0200
commit344d2874f06cce073bb0316fe75f505d2767fbc4 (patch)
tree822b0a6206f5e81ca83ee6749fdbbac50ee9c71b
parentfd129538be29cabad2c2650f9b837ab1afc28a1e (diff)
Add some midl tests
-rw-r--r--tests/projects/idl/test_norpc/src/lockowner.idl28
-rw-r--r--tests/projects/idl/test_norpc/src/test_iid.c9
-rw-r--r--tests/projects/idl/test_norpc/xmake.lua7
-rw-r--r--tests/projects/idl/test_norpc_proxy/src/lockowner.idl28
-rw-r--r--tests/projects/idl/test_norpc_proxy/src/test_iid.c9
-rw-r--r--tests/projects/idl/test_norpc_proxy/xmake.lua7
-rw-r--r--tests/projects/idl/test_rpc/src/example.idl13
-rw-r--r--tests/projects/idl/test_rpc/src/test_iid.c21
-rw-r--r--tests/projects/idl/test_rpc/xmake.lua7
-rw-r--r--tests/projects/idl/test_rpc_noserver/src/example.idl13
-rw-r--r--tests/projects/idl/test_rpc_noserver/src/test_iid.c20
-rw-r--r--tests/projects/idl/test_rpc_noserver/xmake.lua8
12 files changed, 170 insertions, 0 deletions
diff --git a/tests/projects/idl/test_norpc/src/lockowner.idl b/tests/projects/idl/test_norpc/src/lockowner.idl
new file mode 100644
index 000000000..a63fe01bc
--- /dev/null
+++ b/tests/projects/idl/test_norpc/src/lockowner.idl
@@ -0,0 +1,28 @@
+/*
+ * PROJECT: SupernovaX SDK
+ * LICENSE: MIT (https://spdx.org/licenses/MIT)
+ * PURPOSE: Lock owner COM interfaces
+ * COPYRIGHT: Copyright 2023 Christian Rendina <[email protected]>
+ */
+import "oaidl.idl";
+import "ocidl.idl";
+
+[
+ object,
+ local,
+ uuid(9b7e4a00-342c-4106-a19f-4f2704f689f0)
+]
+interface ILockOwner : IUnknown
+{
+ void LOEnter(
+ void
+ );
+
+ void LOLeave(
+ void
+ );
+
+ BOOL LOTryEnter(
+ void
+ );
+};
diff --git a/tests/projects/idl/test_norpc/src/test_iid.c b/tests/projects/idl/test_norpc/src/test_iid.c
new file mode 100644
index 000000000..39a279072
--- /dev/null
+++ b/tests/projects/idl/test_norpc/src/test_iid.c
@@ -0,0 +1,9 @@
+#include <lockowner.h>
+#include <stdio.h>
+
+int main()
+{
+ IID g = IID_ILockOwner;
+ printf("GUID: %x-%x-%x-%llx", g.Data1, g.Data2, g.Data3, *(unsigned long long*)g.Data4);
+ return 0;
+}
diff --git a/tests/projects/idl/test_norpc/xmake.lua b/tests/projects/idl/test_norpc/xmake.lua
new file mode 100644
index 000000000..d1596e3d5
--- /dev/null
+++ b/tests/projects/idl/test_norpc/xmake.lua
@@ -0,0 +1,7 @@
+add_rules("mode.debug", "mode.release")
+
+target("idltest_norpc")
+ set_kind("binary")
+ add_files("src/*.idl", { proxy = false })
+ add_files("src/*.c")
+ add_syslinks("Rpcrt4")
diff --git a/tests/projects/idl/test_norpc_proxy/src/lockowner.idl b/tests/projects/idl/test_norpc_proxy/src/lockowner.idl
new file mode 100644
index 000000000..a63fe01bc
--- /dev/null
+++ b/tests/projects/idl/test_norpc_proxy/src/lockowner.idl
@@ -0,0 +1,28 @@
+/*
+ * PROJECT: SupernovaX SDK
+ * LICENSE: MIT (https://spdx.org/licenses/MIT)
+ * PURPOSE: Lock owner COM interfaces
+ * COPYRIGHT: Copyright 2023 Christian Rendina <[email protected]>
+ */
+import "oaidl.idl";
+import "ocidl.idl";
+
+[
+ object,
+ local,
+ uuid(9b7e4a00-342c-4106-a19f-4f2704f689f0)
+]
+interface ILockOwner : IUnknown
+{
+ void LOEnter(
+ void
+ );
+
+ void LOLeave(
+ void
+ );
+
+ BOOL LOTryEnter(
+ void
+ );
+};
diff --git a/tests/projects/idl/test_norpc_proxy/src/test_iid.c b/tests/projects/idl/test_norpc_proxy/src/test_iid.c
new file mode 100644
index 000000000..39a279072
--- /dev/null
+++ b/tests/projects/idl/test_norpc_proxy/src/test_iid.c
@@ -0,0 +1,9 @@
+#include <lockowner.h>
+#include <stdio.h>
+
+int main()
+{
+ IID g = IID_ILockOwner;
+ printf("GUID: %x-%x-%x-%llx", g.Data1, g.Data2, g.Data3, *(unsigned long long*)g.Data4);
+ return 0;
+}
diff --git a/tests/projects/idl/test_norpc_proxy/xmake.lua b/tests/projects/idl/test_norpc_proxy/xmake.lua
new file mode 100644
index 000000000..f4255cea5
--- /dev/null
+++ b/tests/projects/idl/test_norpc_proxy/xmake.lua
@@ -0,0 +1,7 @@
+add_rules("mode.debug", "mode.release")
+
+target("idltest_norpc")
+ set_kind("binary")
+ add_files("src/*.idl")
+ add_files("src/*.c")
+ add_syslinks("Rpcrt4")
diff --git a/tests/projects/idl/test_rpc/src/example.idl b/tests/projects/idl/test_rpc/src/example.idl
new file mode 100644
index 000000000..655b7827a
--- /dev/null
+++ b/tests/projects/idl/test_rpc/src/example.idl
@@ -0,0 +1,13 @@
+[
+ uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
+ version(1.0)
+]
+interface MyInterface
+{
+ const unsigned short INT_ARRAY_LEN = 100;
+
+ void MyRemoteProc(
+ [in] int param1,
+ [out] int outArray[INT_ARRAY_LEN]
+ );
+}
diff --git a/tests/projects/idl/test_rpc/src/test_iid.c b/tests/projects/idl/test_rpc/src/test_iid.c
new file mode 100644
index 000000000..c7e0f600b
--- /dev/null
+++ b/tests/projects/idl/test_rpc/src/test_iid.c
@@ -0,0 +1,21 @@
+#include <Windows.h>
+#include <example.h>
+#include <stdio.h>
+
+int main()
+{
+ MyInterface_v1_0_c_ifspec = (void*)1;
+ MyInterface_v1_0_s_ifspec = (void*)1;
+ printf("set ok\n");
+ return 0;
+}
+
+void __RPC_FAR * __RPC_API midl_user_allocate(size_t cBytes)
+{
+ return(malloc(cBytes));
+}
+
+void __RPC_API midl_user_free(void __RPC_FAR * p)
+{
+ free(p);
+}
diff --git a/tests/projects/idl/test_rpc/xmake.lua b/tests/projects/idl/test_rpc/xmake.lua
new file mode 100644
index 000000000..3eba457d6
--- /dev/null
+++ b/tests/projects/idl/test_rpc/xmake.lua
@@ -0,0 +1,7 @@
+add_rules("mode.debug", "mode.release")
+
+target("idltest_rpc")
+ set_kind("binary")
+ add_files("src/*.idl" )
+ add_files("src/*.c")
+ add_syslinks("Rpcrt4")
diff --git a/tests/projects/idl/test_rpc_noserver/src/example.idl b/tests/projects/idl/test_rpc_noserver/src/example.idl
new file mode 100644
index 000000000..655b7827a
--- /dev/null
+++ b/tests/projects/idl/test_rpc_noserver/src/example.idl
@@ -0,0 +1,13 @@
+[
+ uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
+ version(1.0)
+]
+interface MyInterface
+{
+ const unsigned short INT_ARRAY_LEN = 100;
+
+ void MyRemoteProc(
+ [in] int param1,
+ [out] int outArray[INT_ARRAY_LEN]
+ );
+}
diff --git a/tests/projects/idl/test_rpc_noserver/src/test_iid.c b/tests/projects/idl/test_rpc_noserver/src/test_iid.c
new file mode 100644
index 000000000..fd992323b
--- /dev/null
+++ b/tests/projects/idl/test_rpc_noserver/src/test_iid.c
@@ -0,0 +1,20 @@
+#include <Windows.h>
+#include <example.h>
+#include <stdio.h>
+
+int main()
+{
+ MyInterface_v1_0_c_ifspec = (void*)1;
+ printf("call ok\n");
+ return 0;
+}
+
+void __RPC_FAR * __RPC_API midl_user_allocate(size_t cBytes)
+{
+ return(malloc(cBytes));
+}
+
+void __RPC_API midl_user_free(void __RPC_FAR * p)
+{
+ free(p);
+}
diff --git a/tests/projects/idl/test_rpc_noserver/xmake.lua b/tests/projects/idl/test_rpc_noserver/xmake.lua
new file mode 100644
index 000000000..6c4bcdd2b
--- /dev/null
+++ b/tests/projects/idl/test_rpc_noserver/xmake.lua
@@ -0,0 +1,8 @@
+add_rules("mode.debug", "mode.release")
+
+target("idltest_rpc_noserver")
+ set_kind("binary")
+ --add_rules("midl")
+ add_files("src/*.idl", { server = false } )
+ add_files("src/*.c")
+ add_syslinks("Rpcrt4")