rpcrt4: Add tests for varying and conformant varying arrays.

This commit is contained in:
Rob Shearman 2007-12-24 17:01:20 +00:00 committed by Alexandre Julliard
parent a38cd7ac01
commit a05923e1d3
2 changed files with 46 additions and 0 deletions

View File

@ -594,6 +594,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)
{
@ -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

View File

@ -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);