File: selftest.c

package info (click to toggle)
libwn6 6.0-17
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, sarge
  • size: 6,012 kB
  • ctags: 3,903
  • sloc: ansic: 45,078; makefile: 960; csh: 274; sh: 17
file content (131 lines) | stat: -rw-r--r-- 2,820 bytes parent folder | download | duplicates (4)
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
125
126
127
128
129
130
131
#include <stdio.h>

#include "wnlib.h"
#include "wnasrt.h"

#include "wncmp.h"
#include "wneq.h"


local void test_cmp()
{
  fprintf(stderr,"testing cmp...\n");

  wn_assert(wn_intcmp(1,1) == 0);
  wn_assert(wn_intcmp(1,0) > 0);
  wn_assert(wn_intcmp(0,1) < 0);
  wn_assert(wn_intcmp(-7,-7) == 0);
  wn_assert(wn_intcmp(-7,-4) < 0);
  wn_assert(wn_intcmp(-7,-401) > 0);
  wn_assert(wn_intcmp(-18,31) < 0);

  {
    char *p1="foo1",*p2="foo2";
    bool success;

    wn_assert(wn_ptrcmp(p1,p1) == 0);
    wn_assert(wn_ptrcmp(p2,p2) == 0);
    wn_assert(wn_ptrcmp(p1,p2) != 0);

    wn_assert(wn_ptrNULLcmp(&success,NULL,NULL) == 0);
    wn_assert(success);

    wn_assert(wn_ptrNULLcmp(&success,NULL,p1) < 0);
    wn_assert(success);

    wn_assert(wn_ptrNULLcmp(&success,p1,NULL) > 0);
    wn_assert(success);

    wn_assert(wn_ptrNULLcmp(&success,p1,p1) == 0);
    wn_assert(success);

    wn_assert(wn_ptrNULLcmp(&success,p1,p2) == 0);
    wn_assert(!success);
  }

  wn_assert(wn_boolcmp(TRUE,TRUE) == 0);
  wn_assert(wn_boolcmp(FALSE,TRUE) < 0);
  wn_assert(wn_boolcmp(TRUE,FALSE) > 0);
  wn_assert(wn_boolcmp(FALSE,FALSE) == 0);
  wn_assert(wn_boolcmp((bool)1,(bool)2) == 0);
  wn_assert(wn_boolcmp((bool)(-1),FALSE) > 0);

  wn_assert(wn_doublecmp(1.2,1.2) == 0);
  wn_assert(wn_doublecmp(1.3,1.2) > 0);
  wn_assert(wn_doublecmp(1.3,1.4) < 0);
  wn_assert(wn_doublecmp(-1.3,-1.4) > 0);
  wn_assert(wn_doublecmp(-1.3,0.4) < 0);

  {
    double *pd1,*pd2,
	   d1,d2;

    pd1 = &d1;
    pd2 = &d2;

    d1 = -1.3;
    d2 = -1.3;
    wn_assert(wn_pdoublecmp(pd1,pd2) == 0);

    d1 = 1.2;
    d2 = -1.3;
    wn_assert(wn_pdoublecmp(pd1,pd2) > 0);
  }

  wn_assert(wn_numstrcmp("wow1","wow1") == 0);
  wn_assert(wn_numstrcmp("wow2","wow1") > 0);
  wn_assert(wn_numstrcmp("wow1","wow2") < 0);
  wn_assert(wn_numstrcmp("wow10","wow2") > 0);
  wn_assert(wn_numstrcmp("wow2","wow10") < 0);

  fprintf(stderr,"  ok!!!!!!\n");
}


local void test_eq()
{
  fprintf(stderr,"testing eq...\n");

  wn_assert(wn_inteq(1,1));
  wn_assert(!wn_inteq(1,0));
  wn_assert(!wn_inteq(0,1));
  wn_assert(wn_inteq(-7,-7));
  wn_assert(!wn_inteq(-7,-4));
  wn_assert(!wn_inteq(-7,-401));
  wn_assert(!wn_inteq(-18,31));

  {
    char *p1="foo1",*p2="foo2";
    bool success;

    wn_assert(wn_ptreq(p1,p1));
    wn_assert(wn_ptreq(p2,p2));
    wn_assert(!wn_ptreq(p1,p2));

    wn_assert(wn_ptrNULLeq(&success,NULL,NULL));
    wn_assert(success);

    wn_assert(!wn_ptrNULLeq(&success,NULL,p1));
    wn_assert(success);

    wn_assert(!wn_ptrNULLeq(&success,p1,NULL) > 0);
    wn_assert(success);

    wn_assert(wn_ptrNULLeq(&success,p1,p1));
    wn_assert(success);

    wn_assert(wn_ptrNULLeq(&success,p1,p2));
    wn_assert(!success);
  }

  fprintf(stderr,"  ok!!!!!!\n");
}


void main(void)
{
  test_cmp();
  test_eq();

  exit(0);
}