Peano
Loading...
Searching...
No Matches
TestMacros.h
Go to the documentation of this file.
1// This file is part of the Peano project. For conditions of distribution and
2// use, please see the copyright notice at www.peano-framework.org
3#pragma once
4
5#include "config.h"
6
7#if defined(GPUOffloadingCPP)
8#include <algorithm>
9#include <execution>
10#endif
11
12#ifdef Parallel
13#include <mpi.h>
14#endif
15#include <cmath>
16#include <iostream>
17
24#define testMethod(name) { \
25 _error = false; \
26 name(); \
27 if (_error) { \
28 std::cerr << "testcase " << _testCaseName << "::" << #name << "() failed" << std::endl << std::endl; \
29 } \
30 };
31
32
33#define testNumericalEquals(lhs,rhs) \
34 (std::abs((rhs) -(lhs)) <= 1.0e-10)
35
36
37#define validate(booleanExpr) if (!(booleanExpr)) { \
38 _errors++; \
39 _error = true; \
40 std::cerr << " boolean test failed " << std::endl \
41 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
42 << " statement: " << #booleanExpr << std::endl; \
43 return;\
44 }
45
49#define validateWithMessage(booleanExpr,message) if (!(booleanExpr)) { \
50 _errors++; \
51 _error = true; \
52 std::cerr << " boolean test failed " << std::endl \
53 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
54 << " statement: " << #booleanExpr << std::endl \
55 << " message: " << message << std::endl; \
56 return;\
57 }
58
59#define validateWithParams1(booleanExpr,param0) if (!(booleanExpr)) { \
60 _errors++; \
61 _error = true; \
62 std::cerr << " boolean test failed " << std::endl \
63 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
64 << " statement: " << #booleanExpr << std::endl \
65 << " parameter " << #param0 << "=" << param0 << std::endl; \
66 return;\
67 }
68
69#define validateWithParams2(booleanExpr,param0,param1) if (!(booleanExpr)) { \
70 _errors++; \
71 _error = true; \
72 std::cerr << " boolean test failed " << std::endl \
73 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
74 << " statement: " << #booleanExpr << std::endl \
75 << " parameter " << #param0 << "=" << param0 << std::endl \
76 << " parameter " << #param1 << "=" << param1 << std::endl; \
77 return;\
78 }
79
80#define validateWithParams3(booleanExpr,param0,param1,param2) if (!(booleanExpr)) { \
81 _errors++; \
82 _error = true; \
83 std::cerr << " boolean test failed " << std::endl \
84 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
85 << " statement: " << #booleanExpr << std::endl \
86 << " parameter " << #param0 << "=" << param0 << std::endl \
87 << " parameter " << #param1 << "=" << param1 << std::endl \
88 << " parameter " << #param2 << "=" << param2 << std::endl; \
89 return;\
90 }
91
92#define validateWithParams4(booleanExpr,param0,param1,param2,param3) if (!(booleanExpr)) { \
93 _errors++; \
94 _error = true; \
95 std::cerr << " boolean test failed " << std::endl \
96 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
97 << " statement: " << #booleanExpr << std::endl \
98 << " parameter " << #param0 << "=" << param0 << std::endl \
99 << " parameter " << #param1 << "=" << param1 << std::endl \
100 << " parameter " << #param2 << "=" << param2 << std::endl \
101 << " parameter " << #param3 << "=" << param3 << std::endl; \
102 return;\
103 }
104
105#define validateWithParams5(booleanExpr,param0,param1,param2,param3,param4) if (!(booleanExpr)) { \
106 _errors++; \
107 _error = true; \
108 std::cerr << " boolean test failed " << std::endl \
109 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
110 << " statement: " << #booleanExpr << std::endl \
111 << " parameter " << #param0 << "=" << param0 << std::endl \
112 << " parameter " << #param1 << "=" << param1 << std::endl \
113 << " parameter " << #param2 << "=" << param2 << std::endl \
114 << " parameter " << #param3 << "=" << param3 << std::endl \
115 << " parameter " << #param4 << "=" << param4 << std::endl; \
116 return;\
117 }
118
119#define validateWithParams6(booleanExpr,param0,param1,param2,param3,param4,param5) if (!(booleanExpr)) { \
120 _errors++; \
121 _error = true; \
122 std::cerr << " boolean test failed " << std::endl \
123 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
124 << " statement: " << #booleanExpr << std::endl \
125 << " parameter " << #param0 << "=" << param0 << std::endl \
126 << " parameter " << #param1 << "=" << param1 << std::endl \
127 << " parameter " << #param2 << "=" << param2 << std::endl \
128 << " parameter " << #param3 << "=" << param3 << std::endl \
129 << " parameter " << #param4 << "=" << param4 << std::endl \
130 << " parameter " << #param5 << "=" << param5 << std::endl; \
131 return;\
132 }
133
134
135 #define validateWithParams7(booleanExpr,param0,param1,param2,param3,param4,param5,param6) if (!(booleanExpr)) { \
136 _errors++; \
137 _error = true; \
138 std::cerr << " boolean test failed " << std::endl \
139 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
140 << " statement: " << #booleanExpr << std::endl \
141 << " parameter " << #param0 << "=" << param0 << std::endl \
142 << " parameter " << #param1 << "=" << param1 << std::endl \
143 << " parameter " << #param2 << "=" << param2 << std::endl \
144 << " parameter " << #param3 << "=" << param3 << std::endl \
145 << " parameter " << #param4 << "=" << param4 << std::endl \
146 << " parameter " << #param5 << "=" << param5 << std::endl \
147 << " parameter " << #param6 << "=" << param6 << std::endl; \
148 return;\
149 }
150
151
152 #define validateWithParams8(booleanExpr,param0,param1,param2,param3,param4,param5,param6,param7) if (!(booleanExpr)) { \
153 _errors++; \
154 _error = true; \
155 std::cerr << " boolean test failed " << std::endl \
156 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
157 << " statement: " << #booleanExpr << std::endl \
158 << " parameter " << #param0 << "=" << param0 << std::endl \
159 << " parameter " << #param1 << "=" << param1 << std::endl \
160 << " parameter " << #param2 << "=" << param2 << std::endl \
161 << " parameter " << #param3 << "=" << param3 << std::endl \
162 << " parameter " << #param4 << "=" << param4 << std::endl \
163 << " parameter " << #param5 << "=" << param5 << std::endl \
164 << " parameter " << #param6 << "=" << param6 << std::endl \
165 << " parameter " << #param7 << "=" << param7 << std::endl; \
166 return;\
167 }
168
169
170 #define validateWithParams9(booleanExpr,param0,param1,param2,param3,param4,param5,param6,param7,param8) if (!(booleanExpr)) { \
171 _errors++; \
172 _error = true; \
173 std::cerr << " boolean test failed " << std::endl \
174 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
175 << " statement: " << #booleanExpr << std::endl \
176 << " parameter " << #param0 << "=" << param0 << std::endl \
177 << " parameter " << #param1 << "=" << param1 << std::endl \
178 << " parameter " << #param2 << "=" << param2 << std::endl \
179 << " parameter " << #param3 << "=" << param3 << std::endl \
180 << " parameter " << #param4 << "=" << param4 << std::endl \
181 << " parameter " << #param5 << "=" << param5 << std::endl \
182 << " parameter " << #param6 << "=" << param6 << std::endl \
183 << " parameter " << #param7 << "=" << param7 << std::endl \
184 << " parameter " << #param8 << "=" << param8 << std::endl; \
185 return;\
186 }
187
188
189 #define validateWithParams10(booleanExpr,param0,param1,param2,param3,param4,param5,param6,param7,param8,param9) if (!(booleanExpr)) { \
190 _errors++; \
191 _error = true; \
192 std::cerr << " boolean test failed " << std::endl \
193 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
194 << " statement: " << #booleanExpr << std::endl \
195 << " parameter " << #param0 << "=" << param0 << std::endl \
196 << " parameter " << #param1 << "=" << param1 << std::endl \
197 << " parameter " << #param2 << "=" << param2 << std::endl \
198 << " parameter " << #param3 << "=" << param3 << std::endl \
199 << " parameter " << #param4 << "=" << param4 << std::endl \
200 << " parameter " << #param5 << "=" << param5 << std::endl \
201 << " parameter " << #param6 << "=" << param6 << std::endl \
202 << " parameter " << #param7 << "=" << param7 << std::endl \
203 << " parameter " << #param8 << "=" << param8 << std::endl \
204 << " parameter " << #param9 << "=" << param9 << std::endl; \
205 return;\
206 }
207
208
209 #define validateWithParams11(booleanExpr,param0,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10) if (!(booleanExpr)) { \
210 _errors++; \
211 _error = true; \
212 std::cerr << " boolean test failed " << std::endl \
213 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
214 << " statement: " << #booleanExpr << std::endl \
215 << " parameter " << #param0 << "=" << param0 << std::endl \
216 << " parameter " << #param1 << "=" << param1 << std::endl \
217 << " parameter " << #param2 << "=" << param2 << std::endl \
218 << " parameter " << #param3 << "=" << param3 << std::endl \
219 << " parameter " << #param4 << "=" << param4 << std::endl \
220 << " parameter " << #param5 << "=" << param5 << std::endl \
221 << " parameter " << #param6 << "=" << param6 << std::endl \
222 << " parameter " << #param7 << "=" << param7 << std::endl \
223 << " parameter " << #param8 << "=" << param8 << std::endl \
224 << " parameter " << #param9 << "=" << param9 << std::endl \
225 << " parameter " << #param10 << "=" << param10 << std::endl; \
226 return;\
227 }
228
229
230 #define validateWithParams12(booleanExpr,param0,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10,param11) if (!(booleanExpr)) { \
231 _errors++; \
232 _error = true; \
233 std::cerr << " boolean test failed " << std::endl \
234 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
235 << " statement: " << #booleanExpr << std::endl \
236 << " parameter " << #param0 << "=" << param0 << std::endl \
237 << " parameter " << #param1 << "=" << param1 << std::endl \
238 << " parameter " << #param2 << "=" << param2 << std::endl \
239 << " parameter " << #param3 << "=" << param3 << std::endl \
240 << " parameter " << #param4 << "=" << param4 << std::endl \
241 << " parameter " << #param5 << "=" << param5 << std::endl \
242 << " parameter " << #param6 << "=" << param6 << std::endl \
243 << " parameter " << #param7 << "=" << param7 << std::endl \
244 << " parameter " << #param8 << "=" << param8 << std::endl \
245 << " parameter " << #param9 << "=" << param9 << std::endl \
246 << " parameter " << #param10 << "=" << param10 << std::endl \
247 << " parameter " << #param11 << "=" << param11 << std::endl; \
248 return;\
249 }
250
251
252 #define validateWithParams13(booleanExpr,param0,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10,param11,param12) if (!(booleanExpr)) { \
253 _errors++; \
254 _error = true; \
255 std::cerr << " boolean test failed " << std::endl \
256 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
257 << " statement: " << #booleanExpr << std::endl \
258 << " parameter " << #param0 << "=" << param0 << std::endl \
259 << " parameter " << #param1 << "=" << param1 << std::endl \
260 << " parameter " << #param2 << "=" << param2 << std::endl \
261 << " parameter " << #param3 << "=" << param3 << std::endl \
262 << " parameter " << #param4 << "=" << param4 << std::endl \
263 << " parameter " << #param5 << "=" << param5 << std::endl \
264 << " parameter " << #param6 << "=" << param6 << std::endl \
265 << " parameter " << #param7 << "=" << param7 << std::endl \
266 << " parameter " << #param8 << "=" << param8 << std::endl \
267 << " parameter " << #param9 << "=" << param9 << std::endl \
268 << " parameter " << #param10 << "=" << param10 << std::endl \
269 << " parameter " << #param11 << "=" << param11 << std::endl \
270 << " parameter " << #param12 << "=" << param12 << std::endl; \
271 return;\
272 }
273
274
275 #define validateWithParams14(booleanExpr,param0,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10,param11,param12,param13) if (!(booleanExpr)) { \
276 _errors++; \
277 _error = true; \
278 std::cerr << " boolean test failed " << std::endl \
279 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
280 << " statement: " << #booleanExpr << std::endl \
281 << " parameter " << #param0 << "=" << param0 << std::endl \
282 << " parameter " << #param1 << "=" << param1 << std::endl \
283 << " parameter " << #param2 << "=" << param2 << std::endl \
284 << " parameter " << #param3 << "=" << param3 << std::endl \
285 << " parameter " << #param4 << "=" << param4 << std::endl \
286 << " parameter " << #param5 << "=" << param5 << std::endl \
287 << " parameter " << #param6 << "=" << param6 << std::endl \
288 << " parameter " << #param7 << "=" << param7 << std::endl \
289 << " parameter " << #param8 << "=" << param8 << std::endl \
290 << " parameter " << #param9 << "=" << param9 << std::endl \
291 << " parameter " << #param10 << "=" << param10 << std::endl \
292 << " parameter " << #param11 << "=" << param11 << std::endl \
293 << " parameter " << #param12 << "=" << param12 << std::endl \
294 << " parameter " << #param13 << "=" << param13 << std::endl; \
295 return;\
296 }
297
298
299 #define validateEquals(actualValue, validValue) if (!(actualValue == validValue)) { \
300 _errors++; \
301 _error = true; \
302 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
303 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
304 << " statement: " << #actualValue << "==" << #validValue << std::endl; \
305 return;\
306 }
307
308#define validateEqualsWithMessage(actualValue, validValue,message) if (!(actualValue == validValue)) { \
309 _errors++; \
310 _error = true; \
311 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
312 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
313 << " statement: " << #actualValue << "==" << #validValue << std::endl \
314 << " message " << message << std::endl; \
315 return;\
316 }
317
318#define validateEqualsWithParams1(actualValue, validValue, param0) if (!(actualValue == validValue)) { \
319 _errors++; \
320 _error = true; \
321 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
322 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
323 << " statement: " << #actualValue << "==" << #validValue << std::endl \
324 << " parameter " << #param0 << "=" << param0 << std::endl; \
325 return;\
326 }
327
328#define validateEqualsWithParams2(actualValue, validValue, param0, param1) if (!(actualValue == validValue)) { \
329 _errors++; \
330 _error = true; \
331 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
332 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
333 << " statement: " << #actualValue << "==" << #validValue << std::endl \
334 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 << std::endl; \
335 return;\
336 }
337
338
339#define validateEqualsWithParams3(actualValue, validValue, param0, param1, param2) if (!(actualValue == validValue)) { \
340 _errors++; \
341 _error = true; \
342 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
343 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
344 << " statement: " << #actualValue << "==" << #validValue << std::endl \
345 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 << ", parameter " << #param2 << "=" << param2 << std::endl; \
346 return;\
347 }
348
349#define validateEqualsWithParams4(actualValue, validValue, param0, param1, param2, param3) if (!(actualValue == validValue)) { \
350 _errors++; \
351 _error = true; \
352 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
353 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
354 << " statement: " << #actualValue << "==" << #validValue << std::endl \
355 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 << ", parameter " << #param2 << "=" << param2 << ", parameter " << #param3 << "=" << param3 << std::endl; \
356 return;\
357 }
358
359#define validateEqualsWithParams5(actualValue, validValue, param0, param1, param2, param3, param4) if (!(actualValue == validValue)) { \
360 _errors++; \
361 _error = true; \
362 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
363 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
364 << " statement: " << #actualValue << "==" << #validValue << std::endl \
365 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 << ", parameter " << #param2 << "=" << param2 << ", parameter " << #param3 << "=" << param3 << ", parameter " << #param4 << "=" << param4 << std::endl; \
366 return;\
367 }
368
369#define validateEqualsWithParams6(actualValue, validValue, param0, param1, param2, param3, param4, param5) if (!(actualValue == validValue)) { \
370 _errors++; \
371 _error = true; \
372 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
373 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
374 << " statement: " << #actualValue << "==" << #validValue << std::endl \
375 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 << ", parameter " << #param2 << "=" << param2 << ", parameter " << #param3 << "=" << param3 << ", parameter " << #param4 << "=" << param4 << ", parameter " << #param5 << "=" << param5 << std::endl; \
376 return;\
377 }
378
379#define validateEqualsWithParams7(actualValue, validValue, param0, param1, param2, param3, param4, param5, param6) if (!(actualValue == validValue)) { \
380 _errors++; \
381 _error = true; \
382 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
383 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
384 << " statement: " << #actualValue << "==" << #validValue << std::endl \
385 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 \
386 << ", parameter " << #param2 << "=" << param2 << ", parameter " << #param3 << "=" << param3 \
387 << ", parameter " << #param4 << "=" << param4 << ", parameter " << #param5 << "=" << param5 \
388 << ", parameter " << #param6 << "=" << param6 << std::endl; \
389 return;\
390 }
391
392#define validateEqualsWithParams8(actualValue, validValue, param0, param1, param2, param3, param4, param5, param6, param7) if (!(actualValue == validValue)) { \
393 _errors++; \
394 _error = true; \
395 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
396 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
397 << " statement: " << #actualValue << "==" << #validValue << std::endl \
398 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 \
399 << ", parameter " << #param2 << "=" << param2 << ", parameter " << #param3 << "=" << param3 \
400 << ", parameter " << #param4 << "=" << param4 << ", parameter " << #param5 << "=" << param5 \
401 << ", parameter " << #param6 << "=" << param6 << ", parameter " << #param7 << "=" << param7 << std::endl; \
402 return;\
403 }
404
405#define validateEqualsWithParams9(actualValue, validValue, param0, param1, param2, param3, param4, param5, param6, param7, param8) if (!(actualValue == validValue)) { \
406 _errors++; \
407 _error = true; \
408 std::cerr << " equality test failed: " << actualValue << " instead of " << validValue << std::endl \
409 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
410 << " statement: " << #actualValue << "==" << #validValue << std::endl \
411 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 \
412 << ", parameter " << #param2 << "=" << param2 << ", parameter " << #param3 << "=" << param3 \
413 << ", parameter " << #param4 << "=" << param4 << ", parameter " << #param5 << "=" << param5 \
414 << ", parameter " << #param6 << "=" << param6 << ", parameter " << #param7 << "=" << param7 \
415 << ", parameter " << #param8 << "=" << param8 << std::endl; \
416 return;\
417 }
418
419#define validateNotEqual(actualValue, validValue) if ((actualValue == validValue)) { \
420 _errors++; \
421 _error = true; \
422 std::cerr << " inequality test failed: " << actualValue << " instead of " << validValue << std::endl \
423 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
424 << " statement: " << #actualValue << "!=" << #validValue << std::endl; \
425 return;\
426 }
427
428#define validateNumericalEquals(actualValue, validValue) if (!testNumericalEquals(actualValue,validValue)) { \
429 _errors++; \
430 _error = true; \
431 std::cerr << " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
432 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
433 << " statement: " << #actualValue << "==" << #validValue << std::endl \
434 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
435 return;\
436 }
437
438#define validateNumericalEqualsWithEps(actualValue, validValue, eps) \
439 if ( (fabs((actualValue) - (validValue)) > eps ) ) { \
440 _errors++; \
441 _error = true; \
442 std::cerr << " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
443 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
444 << " statement: " << #actualValue << "==" << #validValue << std::endl \
445 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
446 return;\
447 }
448
449#define validateNumericalEqualsWithEpsWithParams1(actualValue, validValue, eps, param0) \
450 if ( (fabs((actualValue) - (validValue)) > eps ) ) { \
451 _errors++; \
452 _error = true; \
453 std::cerr<< " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
454 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
455 << " statement: " << #actualValue << "==" << #validValue << std::endl \
456 << " parameter " << #param0 << "=" << param0 << std::endl \
457 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
458 return;\
459 }
460
461#define validateNumericalEqualsWithEpsWithParams2(actualValue, validValue, eps, param0, param1) \
462 if ( (fabs((actualValue) - (validValue)) > eps ) ) { \
463 _errors++; \
464 _error = true; \
465 std::cerr<< " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
466 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
467 << " statement: " << #actualValue << "==" << #validValue << std::endl \
468 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 <<"=" << param1 << std::endl \
469 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
470 return;\
471 }
472
473#define validateNumericalEqualsWithEpsWithParams3(actualValue, validValue, eps, param0, param1, param2) \
474 if ( (fabs((actualValue) - (validValue)) > eps ) ) { \
475 _errors++; \
476 _error = true; \
477 std::cerr<< " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
478 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
479 << " statement: " << #actualValue << "==" << #validValue << std::endl \
480 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 <<"=" << param1 << ", parameter " << #param2 << "=" << param2 << std::endl \
481 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
482 return;\
483 }
484
485
486#define validateNumericalEqualsWithParams1(actualValue, validValue, param0) if (!testNumericalEquals(actualValue,validValue)) { \
487 _errors++; \
488 _error = true; \
489 std::cerr << " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
490 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
491 << " statement: " << #actualValue << "==" << #validValue << std::endl \
492 << " parameter " << #param0 << "=" << param0 << std::endl \
493 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
494 return;\
495 }
496
497#define validateNumericalEqualsWithParams2(actualValue, validValue, param0, param1) if (!testNumericalEquals(actualValue,validValue)) { \
498 _errors++; \
499 _error = true; \
500 std::cerr << " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
501 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
502 << " statement: " << #actualValue << "==" << #validValue << std::endl \
503 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 << std::endl \
504 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
505 return;\
506 }
507
508#define validateNumericalEqualsWithParams3(actualValue, validValue, param0, param1, param2) if (!testNumericalEquals(actualValue,validValue)) { \
509 _errors++; \
510 _error = true; \
511 std::cerr << " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
512 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
513 << " statement: " << #actualValue << "==" << #validValue << std::endl \
514 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 << ", parameter " << #param2 << "=" << param2 << std::endl \
515 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
516 return;\
517 }
518
519#define validateNumericalEqualsWithParams4(actualValue, validValue, param0, param1, param2, param3) if (!testNumericalEquals(actualValue,validValue)) { \
520 _errors++; \
521 _error = true; \
522 std::cerr << " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
523 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
524 << " statement: " << #actualValue << "==" << #validValue << std::endl \
525 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 << ", parameter " << #param2 << "=" << param2 << ", parameter " << #param3 << "=" << param3 << std::endl \
526 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
527 return;\
528 }
529
530#define validateNumericalEqualsWithParams5(actualValue, validValue, param0, param1, param2, param3, param4) if (!testNumericalEquals(actualValue,validValue)) { \
531 _errors++; \
532 _error = true; \
533 std::cerr << " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
534 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
535 << " statement: " << #actualValue << "==" << #validValue << std::endl \
536 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 << ", parameter " << #param2 << "=" << param2 << ", parameter " << #param3 << "=" << param3<< ", parameter " << #param4 << "=" << param4 << std::endl \
537 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
538 return;\
539 }
540
541
542#define validateNumericalEqualsWithParams6(actualValue, validValue, param0, param1, param2, param3, param4, param5) if (!testNumericalEquals(actualValue,validValue)) { \
543 _errors++; \
544 _error = true; \
545 std::cerr << " numerical equality test failed: " << actualValue << " instead of " << validValue << std::endl \
546 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
547 << " statement: " << #actualValue << "==" << #validValue << std::endl \
548 << " parameter " << #param0 << "=" << param0 << ", parameter " << #param1 << "=" << param1 << ", parameter " << #param2 << "=" << param2 << ", parameter " << #param3 << "=" << param3 << ", parameter " << #param4 << "=" << param4 << ", parameter " << #param5 << "=" << param5 << std::endl \
549 << " difference: " << fabs((actualValue)-(validValue)) << std::endl; \
550 return;\
551 }
552
563#define validateNumericalVectorEquals(actual, valid) \
564 if (!tarch::la::equals(actual, valid)) { \
565 _errors++; \
566 _error = true; \
567 std::cerr << " numerical vector equality test failed: " << actual << " instead of " << valid << std::endl \
568 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
569 << " statement: " << #actual << "==" << #valid << std::endl; \
570 return;\
571 }
572
573
574#define validateNumericalVectorEqualsWithParams1(actual, valid, param0) \
575 if (!tarch::la::equals(actual, valid)) { \
576 _errors++; \
577 _error = true; \
578 std::cerr << " numerical vector equality test failed: " << actual << " instead of " << valid << std::endl \
579 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
580 << " statement: " << #actual << "==" << #valid << std::endl \
581 << " parameter " << #param0 << "=" << param0 << std::endl; \
582 return;\
583 }
584
585
586#define validateNumericalVectorEqualsWithParams2(actual, valid, param0, param1) \
587 if (!tarch::la::equals(actual, valid)) { \
588 _errors++; \
589 _error = true; \
590 std::cerr << " numerical vector equality test failed: " << actual << " instead of " << valid << std::endl \
591 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
592 << " statement: " << #actual << "==" << #valid << std::endl \
593 << " parameter " << #param0 << "=" << param0 << #param1 << "=" << param1 << std::endl; \
594 return;\
595 }
596
597
598#define validateNumericalVectorEqualsWithParams3(actual, valid, param0, param1, param2) \
599 if (!tarch::la::equals(actual, valid)) { \
600 _errors++; \
601 _error = true; \
602 std::cerr << " numerical vector equality test failed: " << actual << " instead of " << valid << std::endl \
603 << " file: " << __FILE__ << " \t line: " << __LINE__ << std::endl \
604 << " statement: " << #actual << "==" << #valid << std::endl \
605 << " parameter " << #param0 << "=" << param0 << #param1 << "=" << param1 << #param2 << "=" << param2 <<std::endl; \
606 return;\
607 }
608