Dan Hipschman : rpcrt4: Add encapsulated union tests.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jun 19 06:42:33 CDT 2007


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

Author: Dan Hipschman <dsh at linux.ucla.edu>
Date:   Mon Jun 18 18:36:14 2007 -0700

rpcrt4: Add encapsulated union tests.

---

 dlls/rpcrt4/tests/server.c         |   23 +++++++++++++++++++++++
 dlls/rpcrt4/tests/server.idl       |    8 ++++++++
 dlls/rpcrt4/tests/server_defines.h |    4 ++++
 3 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/dlls/rpcrt4/tests/server.c b/dlls/rpcrt4/tests/server.c
index aa5f3fc..44040df 100644
--- a/dlls/rpcrt4/tests/server.c
+++ b/dlls/rpcrt4/tests/server.c
@@ -245,6 +245,18 @@ s_square_test_us(test_us_t *tus)
   return n * n;
 }
 
+double
+s_square_encu(encu_t *eu)
+{
+  switch (eu->t)
+  {
+  case ENCU_I: return eu->tagged_union.i * eu->tagged_union.i;
+  case ENCU_F: return eu->tagged_union.f * eu->tagged_union.f;
+  default:
+    return 0.0;
+  }
+}
+
 void
 s_stop(void)
 {
@@ -363,6 +375,7 @@ basic_tests(void)
 static void
 union_tests(void)
 {
+  encu_t eu;
   sun_t su;
   int i;
 
@@ -382,6 +395,16 @@ union_tests(void)
   su.u.pi = &i;
   i = 11;
   ok(square_sun(&su) == 121.0, "RPC square_sun\n");
+
+todo_wine {
+  eu.t = ENCU_I;
+  eu.tagged_union.i = 7;
+  ok(square_encu(&eu) == 49.0, "RPC square_encu\n");
+
+  eu.t = ENCU_F;
+  eu.tagged_union.f = 3.0;
+  ok(square_encu(&eu) == 9.0, "RPC square_encu\n");
+}
 }
 
 static test_list_t *
diff --git a/dlls/rpcrt4/tests/server.idl b/dlls/rpcrt4/tests/server.idl
index e3c3877..e7873f5 100644
--- a/dlls/rpcrt4/tests/server.idl
+++ b/dlls/rpcrt4/tests/server.idl
@@ -150,5 +150,13 @@ interface IServer
   } test_us_t;
 
   int square_test_us(test_us_t *tus);
+
+  typedef union encu switch (int t)
+  {
+  case ENCU_I: int i;
+  case ENCU_F: float f;
+  } encu_t;
+
+  double square_encu(encu_t *eu);
   void stop(void);
 }
diff --git a/dlls/rpcrt4/tests/server_defines.h b/dlls/rpcrt4/tests/server_defines.h
index 5794af2..51f934f 100644
--- a/dlls/rpcrt4/tests/server_defines.h
+++ b/dlls/rpcrt4/tests/server_defines.h
@@ -27,3 +27,7 @@
 /* test_list_t case values */
 #define TL_NULL 0
 #define TL_LIST 1
+
+/* encu_t case values */
+#define ENCU_I 27
+#define ENCU_F 0




More information about the wine-cvs mailing list