Jacek Caban : rpcrt4/tests: Add context handle marshaling tests.
Alexandre Julliard
julliard at winehq.org
Fri Jan 25 16:29:08 CST 2019
Module: wine
Branch: master
Commit: 78d75e4a22c089f860b593ede17c1a762ecbdc5d
URL: https://source.winehq.org/git/wine.git/?a=commit;h=78d75e4a22c089f860b593ede17c1a762ecbdc5d
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Jan 25 12:01:35 2019 +0100
rpcrt4/tests: Add context handle marshaling tests.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/rpcrt4/tests/server.c | 41 ++++++++++++++++++++++++++++++++++++++++-
dlls/rpcrt4/tests/server.idl | 8 ++++++++
2 files changed, 48 insertions(+), 1 deletion(-)
diff --git a/dlls/rpcrt4/tests/server.c b/dlls/rpcrt4/tests/server.c
index 5c6b216..4f8f043 100644
--- a/dlls/rpcrt4/tests/server.c
+++ b/dlls/rpcrt4/tests/server.c
@@ -141,6 +141,9 @@ static void (__cdecl *stop_autolisten)(void);
static void (__cdecl *ip_test)(ipu_t *a);
static int (__cdecl *sum_ptr_array)(int *a[2]);
static int (__cdecl *sum_array_ptr)(int (*a)[2]);
+static ctx_handle_t __cdecl (*get_handle)(void);
+static void (__cdecl *get_handle_by_ptr)(ctx_handle_t *r);
+static void (__cdecl *test_handle)(ctx_handle_t ctx_handle);
#define SERVER_FUNCTIONS \
X(int_return) \
@@ -228,7 +231,10 @@ static int (__cdecl *sum_array_ptr)(int (*a)[2]);
X(stop_autolisten) \
X(ip_test) \
X(sum_ptr_array) \
- X(sum_array_ptr)
+ X(sum_array_ptr) \
+ X(get_handle) \
+ X(get_handle_by_ptr) \
+ X(test_handle)
/* type check statements generated in header file */
fnprintf *p_printf = printf;
@@ -1068,6 +1074,26 @@ int __cdecl s_sum_array_ptr(int (*a)[2])
return (*a)[0] + (*a)[1];
}
+ctx_handle_t __cdecl s_get_handle(void)
+{
+ return (ctx_handle_t)0xdeadbeef;
+}
+
+void __cdecl s_get_handle_by_ptr(ctx_handle_t *r)
+{
+ *r = (ctx_handle_t)0xdeadbeef;
+}
+
+void __cdecl s_test_handle(ctx_handle_t ctx_handle)
+{
+ ok(ctx_handle == (ctx_handle_t)0xdeadbeef, "Unexpected ctx_handle %p\n", ctx_handle);
+}
+
+void __RPC_USER ctx_handle_t_rundown(ctx_handle_t ctx_handle)
+{
+ ok(ctx_handle == (ctx_handle_t)0xdeadbeef, "Unexpected ctx_handle %p\n", ctx_handle);
+}
+
static void
make_cmdline(char buffer[MAX_PATH], const char *test)
{
@@ -1809,6 +1835,18 @@ void __cdecl s_authinfo_test(unsigned int protseq, int secure)
}
}
+static void test_handle_return(void)
+{
+ ctx_handle_t handle, handle2;
+
+ if (!is_interp) return; /* broken in widl */
+
+ handle = get_handle();
+ test_handle(handle);
+ get_handle_by_ptr(&handle2);
+ test_handle(handle2);
+}
+
static void
run_tests(void)
{
@@ -1817,6 +1855,7 @@ run_tests(void)
pointer_tests();
array_tests();
context_handle_test();
+ test_handle_return();
}
static void
diff --git a/dlls/rpcrt4/tests/server.idl b/dlls/rpcrt4/tests/server.idl
index 65ba293..143d506 100644
--- a/dlls/rpcrt4/tests/server.idl
+++ b/dlls/rpcrt4/tests/server.idl
@@ -446,4 +446,12 @@ cpp_quote("#endif")
int sum_ptr_array([in] int *a[2]);
int sum_array_ptr([in] int (*a)[2]);
+
+cpp_quote("#ifndef SKIP_STRUCT_DECLS")
+ typedef [context_handle] void *ctx_handle_t;
+cpp_quote("#endif")
+
+ ctx_handle_t get_handle();
+ void get_handle_by_ptr([out] ctx_handle_t *r);
+ void test_handle(ctx_handle_t ctx_handle);
}
More information about the wine-cvs
mailing list