File: objargtest.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 (102 lines) | stat: -rw-r--r-- 3,649 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
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <time.h>
#include "objarg_Employee.h"
#include "objarg_EmployeeArray.h"
#include "sidl_BaseInterface.h"
#include "synch.h"


#define MYASSERT( AAA ) \
  synch_RegOut_startPart(tracker, ++part_no); \
  synch_RegOut_writeComment(tracker, #AAA); \
  if ( AAA ) result = synch_ResultType_PASS; \
  else result = synch_ResultType_FAIL;  \
  synch_RegOut_endPart(tracker, part_no, result);

struct TmpData_t {
  char  *name;
  int    age;
  float  salary;
  char   status;
};

struct TmpData_t TmpData[] = {
  { "John Smith", 35, 75.7e3, 'c' },
  { "Jane Doe", 40, 85.5e3, 'm' },
  { "Ella Vader", 64, 144.2e3, 'r' },
  { "Marge Inovera", 32, 483.2e3, 's' },
  { "Hughy Louis Dewey", 45, 182.9e3, 'm' },
  { "Heywood Yubuzof", 12, 20.8e3, 'x' },
  { "Picov Andropov", 90, 120.6e3, 'r' }
};

int main(int argc, char **argv) {
  int result = synch_ResultType_PASS; 
  int part_no = 0;
  int i, NewRidersFound=0;
  synch_RegOut tracker = synch_RegOut__create();
  const int numEmp = sizeof(TmpData)/sizeof(struct TmpData_t);
  objarg_EmployeeArray a = objarg_EmployeeArray__create();
  objarg_Employee f;
  srand(time(NULL));
  synch_RegOut_setExpectations(tracker, 78);
  for(i = 0; i < numEmp; ++i) {
    objarg_Employee e = objarg_Employee__create();
    objarg_Employee tmp;
    MYASSERT(objarg_Employee_init(e,
                                  TmpData[i].name, TmpData[i].age, 
                                  TmpData[i].salary, TmpData[i].status));
    MYASSERT(objarg_EmployeeArray_appendEmployee(a, e));
    MYASSERT(objarg_EmployeeArray_getLength(a) == (i+1));
    tmp = objarg_EmployeeArray_at(a, i+1);
    MYASSERT(objarg_Employee_isSame(e, (sidl_BaseInterface)tmp));
    MYASSERT(objarg_Employee_getAge(e) == TmpData[i].age);
    MYASSERT(objarg_Employee_getSalary(e) == TmpData[i].salary);
    MYASSERT(objarg_Employee_getStatus(e) == TmpData[i].status);
    if (tmp) objarg_Employee_deleteRef(tmp);
      objarg_Employee_deleteRef(e);
  }
  for(i = 0; i < numEmp; ++i) {
    /* initialize pointer to arbitrary value to make sure input is ignored */
    objarg_Employee e = (objarg_Employee)(ptrdiff_t)rand(); 
    objarg_Employee fromArray;
    int empInd = objarg_EmployeeArray_findByName(a, TmpData[i].name, &e);
    MYASSERT(empInd == (i+1));
    if (empInd != 0) {
      fromArray = objarg_EmployeeArray_at(a, empInd);
      MYASSERT(fromArray);
      if (fromArray) {
        MYASSERT(objarg_Employee_isSame(e, (sidl_BaseInterface)fromArray));
        objarg_Employee_deleteRef(fromArray);
      }
    }
    if (e) objarg_Employee_deleteRef(e);
  }
  f = objarg_Employee__create();
  objarg_Employee_init(f, "Hire High", 21, 0, 's');
  MYASSERT(objarg_EmployeeArray_promoteToMaxSalary(a, &f));
  MYASSERT(f);
  if (f) {
    MYASSERT(objarg_Employee_getSalary(f) == (float)483.2e3);
    MYASSERT(objarg_EmployeeArray_appendEmployee(a, f));
    objarg_Employee_deleteRef(f);
  }
  f = objarg_Employee__create();
  objarg_Employee_init(f, "Amadeo Avogadro, conte di Quaregna",
                       225, 6.022045e23, 'd');
  MYASSERT(!objarg_EmployeeArray_promoteToMaxSalary(a, &f));
  if (f) objarg_Employee_deleteRef(f);
  /*  Adding a NULL employee should fail  */
  MYASSERT(!objarg_EmployeeArray_appendEmployee(a, NULL));
  /* Search for a non-existent employee  */
  NewRidersFound = objarg_EmployeeArray_findByName(a, "New Riders", &f);
  MYASSERT(!(NewRidersFound || f));
  f = NULL;
  MYASSERT(!objarg_EmployeeArray_promoteToMaxSalary(a, &f));
  objarg_EmployeeArray_deleteRef(a);
  synch_RegOut_close(tracker);
  synch_RegOut_deleteRef(tracker);
  return 0;
}