rpcrt4: Add encapsulated union tests.

oldstable
Dan Hipschman 2007-06-18 18:36:14 -07:00 committed by Alexandre Julliard
parent 72ab72c50c
commit 08c846a9da
3 changed files with 35 additions and 0 deletions

View File

@ -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 *

View File

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

View File

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