File: overloadtest.c

package info (click to toggle)
babel 0.10.2-1
  • links: PTS
  • area: contrib
  • in suites: sarge
  • size: 43,932 kB
  • ctags: 29,707
  • sloc: java: 74,695; ansic: 73,142; cpp: 40,649; sh: 18,411; f90: 10,062; fortran: 6,727; python: 6,406; makefile: 3,866; xml: 118; perl: 48
file content (124 lines) | stat: -rw-r--r-- 4,018 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/*
 * File:        overloadtest.c
 * Copyright:   (c) 2001 The Regents of the University of California
 * Revision:    @(#) $Revision: 4434 $
 * Date:        $Date: 2005-03-17 09:05:29 -0800 (Thu, 17 Mar 2005) $
 * Description: Overload Test C client
 *
 */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "Overload.h"
#include "synch.h"

#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif

static void declare_part( synch_RegOut tracker, int * part_no )
{
  synch_RegOut_startPart(tracker, ++(*part_no));
}

static void end_part(synch_RegOut tracker, int part_no, 
                     enum synch_ResultType__enum result)
{
  synch_RegOut_endPart(tracker, part_no, result);
}

#define CHECK(FUNC,COMMENT)                 \
  declare_part(tracker, &part_no);                   \
  synch_RegOut_writeComment(tracker, COMMENT); \
  result = (FUNC) ? synch_ResultType_PASS : synch_ResultType_FAIL;  \
  end_part(tracker, part_no, result);


int main(int argc, char**argv)
{ 
  enum synch_ResultType__enum result       = synch_ResultType_PASS; 
  int part_no      = 0;
  synch_RegOut tracker = synch_RegOut__create();

  double d1        = 1.0;
  float  f1        = 1.0F;
  int    i1        = 1;
  double did       = 2.0;
  double difd      = 3.0;
  const char*  ev  = "AnException";
  char *msg;
  char*        s1  = "test string";
  char*        sret;

  struct sidl_dcomplex dc = { 1.1, 1.1 };
  struct sidl_dcomplex dcret;
  struct sidl_fcomplex fc = { 1.1F, 1.1F };
  struct sidl_fcomplex fcret;

  Overload_Test        t  = Overload_Test__create ();
  Overload_AnException ae = Overload_AnException__create ();
  Overload_AClass      ac = Overload_AClass__create();
  Overload_BClass      bc = Overload_BClass__create();

  synch_RegOut_setExpectations(tracker, 19);
  CHECK(Overload_Test_getValue(t) == 1, 
        "checking empty argument to known value");

  CHECK(Overload_Test_getValueBool(t, TRUE) == TRUE, "checking bool");
  CHECK(Overload_Test_getValueDouble(t, d1) == d1, "checking double");
  dcret = Overload_Test_getValueDcomplex(t, dc);
  CHECK(dcret.real == dc.real && dcret.imaginary == dc.imaginary, 
        "checking dcomplex");
  CHECK(Overload_Test_getValueFloat(t, f1) == f1, "checking float");
  fcret = Overload_Test_getValueFcomplex(t, fc);
  CHECK(fcret.real == fc.real && fcret.imaginary == fc.imaginary, 
        "checking fcomplex");
  CHECK(Overload_Test_getValueInt(t, i1) == i1, "checking int");
  sret = Overload_Test_getValueString(t, s1);
  CHECK(sret && !strcmp(sret, s1), "checking string");
  if (sret) free ((void*)sret);

  CHECK(Overload_Test_getValueDoubleInt(t, d1, i1) == did, 
        "checking double int");
  CHECK(Overload_Test_getValueIntDouble(t, i1, d1) == did, 
        "checking int double");

  CHECK(Overload_Test_getValueDoubleIntFloat(t, d1, i1, f1) == difd, 
       "checking double int float");
  CHECK(Overload_Test_getValueIntDoubleFloat(t, i1, d1, f1) == difd, 
        "checking int double float");

  CHECK(Overload_Test_getValueDoubleFloatInt(t, d1, f1, i1) == difd, 
       "checking double float int");
  CHECK(Overload_Test_getValueIntFloatDouble(t, i1, f1, d1) == difd, 
        "checking int float double");

  CHECK(Overload_Test_getValueFloatDoubleInt(t, f1, d1, i1) == difd, 
       "checking float double int");
  CHECK(Overload_Test_getValueFloatIntDouble(t, f1, i1, d1) == difd, 
        "checking float int double");

  msg = Overload_Test_getValueException(t, ae);
  CHECK(msg && !strcmp(msg, ev), 
        "checking exception to known value");
  if (msg) free((void*)msg);

  CHECK(Overload_Test_getValueAClass(t, ac) == 2, 
        "checking AClass value to known value");

  CHECK(Overload_Test_getValueBClass(t, bc) == 2, 
        "checking BClass value to known value");


  Overload_BClass_deleteRef (bc);
  Overload_AClass_deleteRef (ac);
  Overload_AnException_deleteRef (ae);
  Overload_Test_deleteRef (t);
  synch_RegOut_close(tracker);
  synch_RegOut_deleteRef(tracker);
  return 0;
}