Rob Shearman : rpcrt4: Add tests for varying and conformant varying arrays.
Alexandre Julliard
julliard at winehq.org
Wed Dec 26 10:05:08 CST 2007
Module: wine
Branch: master
Commit: a05923e1d303788c9b7bfda61eb2ca9ae48653f7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a05923e1d303788c9b7bfda61eb2ca9ae48653f7
Author: Rob Shearman <rob at codeweavers.com>
Date: Mon Dec 24 17:01:20 2007 +0000
rpcrt4: Add tests for varying and conformant varying arrays.
---
dlls/rpcrt4/tests/server.c | 44 ++++++++++++++++++++++++++++++++++++++++++
dlls/rpcrt4/tests/server.idl | 2 +
2 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/dlls/rpcrt4/tests/server.c b/dlls/rpcrt4/tests/server.c
index c8acab9..2e392dd 100644
--- a/dlls/rpcrt4/tests/server.c
+++ b/dlls/rpcrt4/tests/server.c
@@ -595,6 +595,32 @@ s_context_handle_test(void)
}
void
+s_get_5numbers(int count, pints_t n[5])
+{
+ int i;
+ for (i = 0; i < count; i++)
+ {
+ n[i].pi = midl_user_allocate(sizeof(*n[i].pi));
+ *n[i].pi = i;
+ n[i].ppi = NULL;
+ n[i].pppi = NULL;
+ }
+}
+
+void
+s_get_numbers(int length, int size, pints_t n[])
+{
+ int i;
+ for (i = 0; i < length; i++)
+ {
+ n[i].pi = midl_user_allocate(sizeof(*n[i].pi));
+ *n[i].pi = i;
+ n[i].ppi = NULL;
+ n[i].pppi = NULL;
+ }
+}
+
+void
s_stop(void)
{
ok(RPC_S_OK == RpcMgmtStopServerListening(NULL), "RpcMgmtStopServerListening\n");
@@ -1029,6 +1055,8 @@ array_tests(void)
int n;
int ca[5] = {1, -2, 3, -4, 5};
doub_carr_t *dc;
+ int *pi;
+ pints_t api[5];
ok(cstr_length(str1, sizeof str1) == strlen(str1), "RPC cstr_length\n");
@@ -1103,6 +1131,22 @@ array_tests(void)
free_pyramid_doub_carr(dc);
ok(sum_L1_norms(2, vs) == 21, "RPC sum_L1_norms\n");
+
+ memset(api, 0, sizeof(api));
+ pi = HeapAlloc(GetProcessHeap(), 0, sizeof(*pi));
+ *pi = -1;
+ api[0].pi = pi;
+ get_5numbers(1, api);
+ todo_wine
+ ok(api[0].pi == pi, "RPC varying array [out] pointer changed from %p to %p\n", pi, api[0].pi);
+ ok(*api[0].pi == 0, "pi unmarshalled incorrectly %d\n", *pi);
+
+ api[0].pi = pi;
+ get_numbers(1, 1, api);
+ todo_wine
+ ok(api[0].pi == pi, "RPC conformant varying array [out] pointer changed from %p to %p\n", pi, api[0].pi);
+ ok(*api[0].pi == 0, "pi unmarshalled incorrectly %d\n", *pi);
+ HeapFree(GetProcessHeap(), 0, pi);
}
static void
diff --git a/dlls/rpcrt4/tests/server.idl b/dlls/rpcrt4/tests/server.idl
index 66b0aff..ec51757 100644
--- a/dlls/rpcrt4/tests/server.idl
+++ b/dlls/rpcrt4/tests/server.idl
@@ -300,6 +300,8 @@ cpp_quote("#endif")
int sum_pcarr2(int n, [size_is(, n)] int **pa);
int sum_L1_norms(int n, [size_is(n)] vector_t *vs);
+ void get_5numbers([in] int count, [out, length_is(count)] pints_t pn[5]);
+ void get_numbers([in] int length, [in] int size, [out, length_is(length), size_is(size)] pints_t pn[]);
str_t get_filename(void);
void context_handle_test(void);
void stop(void);
More information about the wine-cvs
mailing list