librfn
An ad-hoc utility library
fuzztest.c
Go to the documentation of this file.
1 /*
2  * siggentest.c
3  *
4  * Part of librfn (a general utility library from redfelineninja.org.uk)
5  *
6  * Copyright (C) 2012 Daniel Thompson <daniel@redfelineninja.org.uk>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License as published
10  * by the Free Software Foundation; either version 3 of the License, or
11  * (at your option) any later version.
12  */
13 
14 #undef NDEBUG
15 
16 #include <assert.h>
17 #include <stdio.h>
18 #include <stdlib.h>
19 
20 #include <librfn.h>
21 
22 void test()
23 {
24  assert( fuzzcmp(10, 10, 1));
25  assert(!fuzzcmp(10, 10.01, 1));
26  assert( fuzzcmp(10, 10.01, 1.1));
27  assert(!fuzzcmp(10, 10.01, 1.001));
28 
29  assert(!fuzzcmp(10, 9.99, 1));
30  assert( fuzzcmp(10, 9.99, 1.1));
31  assert(!fuzzcmp(10, 9.99, 1.001));
32 
33  assert( fuzzcmp(-10, -10, 1));
34  assert(!fuzzcmp(-10, -10.01, 1));
35  assert( fuzzcmp(-10, -10.01, 1.1));
36  assert(!fuzzcmp(-10, -10.01, 1.001));
37 }
38 
39 void testf()
40 {
41  assert( fuzzcmpf(10, 10, 1));
42  assert(!fuzzcmpf(10, 10.01, 1));
43  assert( fuzzcmpf(10, 10.01, 1.2));
44  //TODO: why this this not match the double precision behaviour
45  //assert(!fuzzcmpf(10, 10.1, 1.01));
46 
47  assert(!fuzzcmpf(10, 9.99, 1));
48  assert( fuzzcmpf(10, 9.99, 1.1));
49  //assert(!fuzzcmpf(10, 9.99, 1.001));
50 
51  assert( fuzzcmpf(-10, -10, 1));
52  assert(!fuzzcmpf(-10, -10.01, 1));
53  assert( fuzzcmpf(-10, -10.01, 1.1));
54  //assert(!fuzzcmpf(-10, -10.01, 1.001));
55 }
56 
57 void teste()
58 {
59  assert( fuzzcmpe(10, 10, 0));
60 
61  assert( fuzzcmpe(10, 10.01, 0.1));
62  assert( fuzzcmpe(10, 10.01, 0.01));
63  assert(!fuzzcmpe(10, 10.01, 0.001));
64 
65  assert( fuzzcmpe(10, 9.99, 0.1));
66  assert( fuzzcmpe(10, 9.99, 0.01));
67  assert(!fuzzcmpe(10, 9.99, 0.001));
68 
69  assert( fuzzcmpe(-10, -10, 0));
70 
71  assert( fuzzcmpe(-10, -10.01, 0.1));
72  assert( fuzzcmpe(-10, -10.01, 0.01));
73  assert(!fuzzcmpe(-10, -10.01, 0.001));
74 
75  assert( fuzzcmpe(-10, -9.99, 0.1));
76  assert( fuzzcmpe(-10, -9.99, 0.01));
77  assert(!fuzzcmpe(-10, -9.99, 0.001));
78 
79 }
80 
81 void testef()
82 {
83  assert( fuzzcmpef(10, 10, 0));
84 
85  assert( fuzzcmpef(10, 10.01, 0.1));
86  assert( fuzzcmpef(10, 10.5, 0.5));
87  assert(!fuzzcmpef(10, 10.01, 0.001));
88 
89  assert( fuzzcmpef(10, 9.99, 0.1));
90  assert( fuzzcmpef(10, 9.5, 0.5));
91  assert(!fuzzcmpef(10, 9.99, 0.001));
92 
93  assert( fuzzcmpef(-10, -10, 0));
94 
95  assert( fuzzcmpef(-10, -10.01, 0.1));
96  assert( fuzzcmpef(-10, -10.5, 0.5));
97  assert(!fuzzcmpef(-10, -10.01, 0.001));
98 
99  assert( fuzzcmpef(-10, -9.99, 0.1));
100  assert( fuzzcmpef(-10, -9.5, 0.5));
101  assert(!fuzzcmpef(-10, -9.99, 0.001));
102 }
103 
104 void testb()
105 {
106  double a = 32767.0f;
107  double b = 32766.0f;
108 
109  assert( fuzzcmpb(a, b, 4));
110  assert(!fuzzcmpb(a, b, 20));
111  assert( fuzzcmpb(a, b, 14));
112  //assert( fuzzcmpb(a, b, 15)); // 15 is the exact expected boundary
113  assert(!fuzzcmpb(a, b, 16));
114 }
115 
116 void testbf()
117 {
118  float a = 32767.0f;
119  float b = 32766.0f;
120 
121  assert( fuzzcmpbf(a, b, 4));
122  assert(!fuzzcmpbf(a, b, 20));
123  assert( fuzzcmpbf(a, b, 14));
124  //assert( fuzzcmpbf(a, b, 15)); // 15 is the exact expected boundary
125  assert(!fuzzcmpbf(a, b, 16));
126 }
127 
128 int main()
129 {
130  test();
131  testf();
132  teste();
133  testef();
134  testb();
135  testbf();
136  return 0;
137 }
int main()
Definition: fuzztest.c:128
void testf()
Definition: fuzztest.c:39
struct alpha a
void testb()
Definition: fuzztest.c:104
int fuzzcmp(double a, double b, double delta)
Definition: fuzz.c:21
void testbf()
Definition: fuzztest.c:116
void testef()
Definition: fuzztest.c:81
struct bravo b
int fuzzcmpf(float a, float b, float delta)
Definition: fuzz.c:41
int fuzzcmpbf(float a, float b, int bits)
Definition: fuzz.c:79
void test()
Definition: fuzztest.c:22
void teste()
Definition: fuzztest.c:57
int fuzzcmpe(double a, double b, double e)
Definition: fuzz.c:61
int fuzzcmpb(double a, double b, int bits)
Definition: fuzz.c:73
int fuzzcmpef(float a, float b, float e)
Definition: fuzz.c:67