|
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