Skip to content

Commit 490e323

Browse files
committed
add assure (vs assert) to C++
1 parent e217fd2 commit 490e323

File tree

2 files changed

+33
-13
lines changed

2 files changed

+33
-13
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
66

77
## [Unreleased]
88
### Added
9+
- C++ functions for `assure`; `assert`s will run tests and continue, `assure`s will abort on failures
910

1011
### Changed
1112

cpp/unittest/Assertion.h

+32-13
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
11
#pragma once
22
#include "Compare.h"
33

4-
// helper define for the operators below
5-
#define assertOp(desc, relevance1, arg1, op, op_name, relevance2, arg2) \
6-
do \
7-
{ \
8-
if (!assertion<typeof(arg1), typeof(arg2)>(__FILE__, __LINE__, \
9-
desc, \
10-
relevance1, #arg1, (arg1), \
11-
op_name, op, \
12-
relevance2, #arg2, (arg2))) \
13-
{ \
14-
return; \
15-
} \
4+
#define testBehaviorOp(die, desc, rel1, arg1, op, op_name, rel2, arg2) \
5+
do \
6+
{ \
7+
if (!assertion<typeof(arg1), typeof(arg2)>(__FILE__, __LINE__, \
8+
desc, \
9+
rel1, #arg1, (arg1), \
10+
op_name, op, \
11+
rel2, #arg2, (arg2))) \
12+
{ \
13+
if (die) return; \
14+
} \
1615
} while (0)
1716

18-
/** macro generates optional output and calls fail() followed by a return if false. */
17+
18+
19+
// helper define for the operators below
20+
#define assertOp(desc, rel1, arg1, op, op_name, rel2, arg2) \
21+
testBehaviorOp(false, desc, rel1, arg1, op, op_name, rel2, arg2)
22+
23+
#define assureOp(desc, rel1, arg1, op, op_name, rel2, arg2) \
24+
testBehaviorOp(true, desc, rel1, arg1, op, op_name, rel2, arg2)
25+
26+
27+
/** macro generates optional output and calls fail() but does not return if false. */
1928
#define assertEqual(arg1,arg2) assertOp("assertEqual","expected",arg1,compareEqual,"==","actual",arg2)
2029
#define assertNotEqual(arg1,arg2) assertOp("assertNotEqual","unwanted",arg1,compareNotEqual,"!=","actual",arg2)
2130
#define assertLess(arg1,arg2) assertOp("assertLess","lowerBound",arg1,compareLess,"<","upperBound",arg2)
@@ -25,3 +34,13 @@
2534
#define assertTrue(arg) assertEqual(arg,true)
2635
#define assertFalse(arg) assertEqual(arg,false)
2736

37+
/** macro generates optional output and calls fail() followed by a return if false. */
38+
#define assureEqual(arg1,arg2) assureOp("assureEqual","expected",arg1,compareEqual,"==","actual",arg2)
39+
#define assureNotEqual(arg1,arg2) assureOp("assureNotEqual","unwanted",arg1,compareNotEqual,"!=","actual",arg2)
40+
#define assureLess(arg1,arg2) assureOp("assureLess","lowerBound",arg1,compareLess,"<","upperBound",arg2)
41+
#define assureMore(arg1,arg2) assureOp("assureMore","upperBound",arg1,compareMore,">","lowerBound",arg2)
42+
#define assureLessOrEqual(arg1,arg2) assureOp("assureLessOrEqual","lowerBound",arg1,compareLessOrEqual,"<=","upperBound",arg2)
43+
#define assureMoreOrEqual(arg1,arg2) assureOp("assureMoreOrEqual","upperBound",arg1,compareMoreOrEqual,">=","lowerBound",arg2)
44+
#define assureTrue(arg) assertEqual(arg,true)
45+
#define assureFalse(arg) assertEqual(arg,false)
46+

0 commit comments

Comments
 (0)