From 3c5688a80d9798a52bcbe73594104c2b533ba486 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 9 Jun 2011 12:07:18 +0200 Subject: [PATCH] rpcrt4/tests: Add a few more marshalling tests. --- dlls/rpcrt4/tests/server.c | 53 +++++++++++++++++++++++++++++++++++- dlls/rpcrt4/tests/server.idl | 9 ++++-- 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/dlls/rpcrt4/tests/server.c b/dlls/rpcrt4/tests/server.c index 1764718d739..f959d9da282 100644 --- a/dlls/rpcrt4/tests/server.c +++ b/dlls/rpcrt4/tests/server.c @@ -106,6 +106,41 @@ s_sum(int x, int y) return x + y; } +signed char s_sum_char(signed char x, signed char y) +{ + return x + y; +} + +short s_sum_short(short x, short y) +{ + return x + y; +} + +int s_sum_float(float x, float y) +{ + return x + y; +} + +int s_sum_double_int(int x, double y) +{ + return x + y; +} + +hyper s_sum_hyper(hyper x, hyper y) +{ + return x + y; +} + +int s_sum_hyper_int(hyper x, hyper y) +{ + return x + y; +} + +int s_sum_char_hyper(signed char x, hyper y) +{ + return x + y; +} + void s_square_out(int x, int *y) { @@ -825,6 +860,7 @@ basic_tests(void) short h; char c; int x; + hyper y; str_struct_t ss = {string}; wstr_struct_t ws = {wstring}; str_t str; @@ -834,7 +870,22 @@ basic_tests(void) ok(int_return() == INT_CODE, "RPC int_return\n"); ok(square(7) == 49, "RPC square\n"); - ok(sum(23, -4) == 19, "RPC sum\n"); + x = sum(23, -4); + ok(x == 19, "RPC sum got %d\n", x); + c = sum_char(-23, 50); + ok(c == 27, "RPC sum_char got %d\n", (int)c); + h = sum_short(1122, -344); + ok(h == 778, "RPC sum_short got %d\n", (int)h); + x = sum_float(123.45, -32.2); + ok(x == 91, "RPC sum_float got %d\n", x); + x = sum_double_int(-78, 148.46); + ok(x == 70, "RPC sum_double_int got %d\n", x); + y = sum_hyper((hyper)0x12345678 << 16, (hyper)0x33557799 << 16); + ok(y == (hyper)0x4589ce11 << 16, "RPC hyper got %x%08x\n", (DWORD)(y >> 32), (DWORD)y); + x = sum_hyper_int((hyper)0x24242424 << 16, -((hyper)0x24241212 << 16)); + ok(x == 0x12120000, "RPC hyper_int got 0x%x\n", x); + x = sum_char_hyper( 12, ((hyper)0x42424242 << 32) | 0x33334444 ); + ok(x == 0x33334450, "RPC char_hyper got 0x%x\n", x); x = 0; square_out(11, &x); diff --git a/dlls/rpcrt4/tests/server.idl b/dlls/rpcrt4/tests/server.idl index 56bf1a55df3..3be3f33e4d4 100644 --- a/dlls/rpcrt4/tests/server.idl +++ b/dlls/rpcrt4/tests/server.idl @@ -31,9 +31,7 @@ typedef int fnprintf(const char *format, ...); [ uuid(00000000-4114-0704-2301-000000000000), -#ifndef __midl implicit_handle(handle_t IServer_IfHandle) -#endif ] interface IServer { @@ -81,6 +79,13 @@ cpp_quote("#endif") int int_return(void); int square(int x); int sum(int x, int y); + signed char sum_char(signed char x, signed char y); + short sum_short(short x, short y); + int sum_float(float x, float y); + int sum_double_int(int x, double y); + hyper sum_hyper(hyper x, hyper y); + int sum_hyper_int(hyper x, hyper y); + int sum_char_hyper(signed char x, hyper y); void square_out(int x, [out] int *y); void square_ref([in, out] int *x); int str_length([string] const char *s);