Alexandre Julliard : rpcrt4/tests: Add a few more marshalling tests.

Alexandre Julliard julliard at winehq.org
Thu Jun 9 11:47:38 CDT 2011


Module: wine
Branch: master
Commit: 3c5688a80d9798a52bcbe73594104c2b533ba486
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3c5688a80d9798a52bcbe73594104c2b533ba486

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Jun  9 12:07:18 2011 +0200

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 1764718..f959d9d 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 56bf1a5..3be3f33 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);




More information about the wine-cvs mailing list