|
6 | 6 |
|
7 | 7 | #include "Compare.h"
|
8 | 8 |
|
| 9 | +#define testBehaviorExp(die, desc, pass) \ |
| 10 | + do \ |
| 11 | + { \ |
| 12 | + if (!assertion(__FILE__, __LINE__, \ |
| 13 | + desc, pass)) \ |
| 14 | + { \ |
| 15 | + if (die) return; \ |
| 16 | + } \ |
| 17 | + } while (0) |
| 18 | + |
9 | 19 | #define testBehaviorOp(die, desc, rel1, arg1, op, op_name, rel2, arg2) \
|
10 | 20 | do \
|
11 |
| - { \ |
| 21 | + { \ |
12 | 22 | if (!assertion<typeof(arg1), typeof(arg2)>(__FILE__, __LINE__, \
|
13 | 23 | desc, \
|
14 | 24 | rel1, #arg1, (arg1), \
|
|
30 | 40 |
|
31 | 41 |
|
32 | 42 | /** macro generates optional output and calls fail() but does not return if false. */
|
| 43 | +#define assertTrue(arg) testBehaviorExp(false, "assertTrue " #arg, (arg)) |
| 44 | +#define assertFalse(arg) testBehaviorExp(false, "assertFalse " #arg, !(arg)) |
| 45 | +#define assertNull(arg) testBehaviorExp(false, "assertNull " #arg, ((void*)NULL == (void*)(arg))) |
| 46 | +#define assertNotNull(arg) testBehaviorExp(false, "assertNotNull " #arg, ((void*)NULL != (void*)(arg))) |
33 | 47 | #define assertEqual(arg1,arg2) assertOp("assertEqual","expected",arg1,evaluateDoubleEqual,"==","actual",arg2)
|
34 | 48 | #define assertNotEqual(arg1,arg2) assertOp("assertNotEqual","unwanted",arg1,evaluateNotEqual,"!=","actual",arg2)
|
35 | 49 | #define assertComparativeEqual(arg1,arg2) assertOp("assertEqual","expected",arg1,compareEqual,"!<>","actual",arg2)
|
36 | 50 | #define assertComparativeNotEqual(arg1,arg2) assertOp("assertEqual","unwanted",arg1,compareNotEqual,"<>","actual",arg2)
|
37 |
| -#define assertLess(arg1,arg2) assertOp("assertLess","lowerBound",arg1,compareLess,"<","upperBound",arg2) |
38 |
| -#define assertMore(arg1,arg2) assertOp("assertMore","upperBound",arg1,compareMore,">","lowerBound",arg2) |
39 |
| -#define assertLessOrEqual(arg1,arg2) assertOp("assertLessOrEqual","lowerBound",arg1,compareLessOrEqual,"<=","upperBound",arg2) |
40 |
| -#define assertMoreOrEqual(arg1,arg2) assertOp("assertMoreOrEqual","upperBound",arg1,compareMoreOrEqual,">=","lowerBound",arg2) |
41 |
| -#define assertTrue(arg) assertEqual(true, arg) |
42 |
| -#define assertFalse(arg) assertEqual(false, arg) |
43 |
| -#define assertNull(arg) assertEqual((void*)NULL, (void*)arg) |
44 |
| -#define assertNotNull(arg) assertNotEqual((void*)NULL, (void*)arg) |
| 51 | +#define assertLess(arg1,arg2) assertOp("assertLess","lowerBound",arg1,compareLess,"<","actual",arg2) |
| 52 | +#define assertMore(arg1,arg2) assertOp("assertMore","upperBound",arg1,compareMore,">","actual",arg2) |
| 53 | +#define assertLessOrEqual(arg1,arg2) assertOp("assertLessOrEqual","lowerBound",arg1,compareLessOrEqual,"<=","actual",arg2) |
| 54 | +#define assertMoreOrEqual(arg1,arg2) assertOp("assertMoreOrEqual","upperBound",arg1,compareMoreOrEqual,">=","actual",arg2) |
| 55 | + |
| 56 | +#define assertEqualFloat(arg1, arg2, arg3) assertOp("assertEqualFloat", "epsilon", arg3, compareMoreOrEqual, ">=", "actualDifference", fabs(arg1 - arg2)) |
| 57 | +#define assertNotEqualFloat(arg1, arg2, arg3) assertOp("assertNotEqualFloat", "epsilon", arg3, compareLessOrEqual, "<=", "insufficientDifference", fabs(arg1 - arg2)) |
| 58 | +#define assertInfinity(arg) testBehaviorExp(false, "assertInfinity " #arg, isinf(arg)) |
| 59 | +#define assertNotInfinity(arg) testBehaviorExp(false, "assertNotInfinity " #arg, !isinf(arg)) |
| 60 | +#define assertNAN(arg) testBehaviorExp(false, "assertNAN " #arg, isnan(arg)) |
| 61 | +#define assertNotNAN(arg) testBehaviorExp(false, "assertNotNAN " #arg, !isnan(arg)) |
| 62 | + |
45 | 63 |
|
46 | 64 | /** macro generates optional output and calls fail() followed by a return if false. */
|
| 65 | +#define assureTrue(arg) testBehaviorExp(true, "assertTrue " #arg, (arg)) |
| 66 | +#define assureFalse(arg) testBehaviorExp(true, "assertFalse " #arg, !(arg)) |
| 67 | +#define assureNull(arg) testBehaviorExp(true, "assertNull " #arg, ((void*)NULL == (void*)(arg))) |
| 68 | +#define assureNotNull(arg) testBehaviorExp(true, "assertNotNull " #arg, ((void*)NULL != (void*)(arg))) |
47 | 69 | #define assureEqual(arg1,arg2) assureOp("assureEqual","expected",arg1,evaluateDoubleEqual,"==","actual",arg2)
|
48 | 70 | #define assureNotEqual(arg1,arg2) assureOp("assureNotEqual","unwanted",arg1,evaluateNotEqual,"!=","actual",arg2)
|
49 | 71 | #define assureComparativeEqual(arg1,arg2) assertOp("assureEqual","expected",arg1,compareEqual,"!<>","actual",arg2)
|
50 | 72 | #define assureComparativeNotEqual(arg1,arg2) assertOp("assertEqual","unwanted",arg1,compareNotEqual,"<>","actual",arg2)
|
51 |
| -#define assureLess(arg1,arg2) assureOp("assureLess","lowerBound",arg1,compareLess,"<","upperBound",arg2) |
52 |
| -#define assureMore(arg1,arg2) assureOp("assureMore","upperBound",arg1,compareMore,">","lowerBound",arg2) |
53 |
| -#define assureLessOrEqual(arg1,arg2) assureOp("assureLessOrEqual","lowerBound",arg1,compareLessOrEqual,"<=","upperBound",arg2) |
54 |
| -#define assureMoreOrEqual(arg1,arg2) assureOp("assureMoreOrEqual","upperBound",arg1,compareMoreOrEqual,">=","lowerBound",arg2) |
55 |
| -#define assureTrue(arg) assureEqual(true, arg) |
56 |
| -#define assureFalse(arg) assureEqual(false, arg) |
57 |
| -#define assureNull(arg) assureEqual((void*)NULL, (void*)arg) |
58 |
| -#define assureNotNull(arg) assureNotEqual((void*)NULL, (void*)arg) |
| 73 | +#define assureLess(arg1,arg2) assureOp("assureLess","lowerBound",arg1,compareLess,"<","actual",arg2) |
| 74 | +#define assureMore(arg1,arg2) assureOp("assureMore","upperBound",arg1,compareMore,">","actual",arg2) |
| 75 | +#define assureLessOrEqual(arg1,arg2) assureOp("assureLessOrEqual","lowerBound",arg1,compareLessOrEqual,"<=","actual",arg2) |
| 76 | +#define assureMoreOrEqual(arg1,arg2) assureOp("assureMoreOrEqual","upperBound",arg1,compareMoreOrEqual,">=","actual",arg2) |
| 77 | + |
| 78 | +#define assureEqualFloat(arg1, arg2, arg3) assureOp("assureEqualFloat", "epsilon", arg3, compareMoreOrEqual, ">=", "actualDifference", fabs(arg1 - arg2)) |
| 79 | +#define assureNotEqualFloat(arg1, arg2, arg3) assureOp("assureNotEqualFloat", "epsilon", arg3, compareLessOrEqual, "<=", "insufficientDifference", fabs(arg1 - arg2)) |
| 80 | +#define assureInfinity(arg) testBehaviorExp(true, "assertInfinity " #arg, isinf(arg)) |
| 81 | +#define assureNotInfinity(arg) testBehaviorExp(true, "assertNotInfinity " #arg, !isinf(arg)) |
| 82 | +#define assureNAN(arg) testBehaviorExp(true, "assertNAN " #arg, isnan(arg)) |
| 83 | +#define assureNotNAN(arg) testBehaviorExp(true, "assertNotNAN " #arg, !isnan(arg)) |
0 commit comments