@@ -22,19 +22,22 @@ macro genSelf(templ) =
22
22
nTempl.params.insert 1 , newIdentDefs(ident" self" , bindSym" TestCase" )
23
23
result .add nTempl
24
24
25
- template assertEqual * (a, b ){.genSelf .} =
25
+ template gen1(name, op ){.dirty .} =
26
26
bind check
27
- check a == b
28
- template assertNotEqual* (a, b){.genSelf.} =
29
- bind check
30
- check a != b
31
- template assertTrue* (bo){.genSelf.} =
32
- bind check
33
- check bo
27
+ template name* (a){.genSelf.} =
28
+ check op(a)
29
+
30
+ template asis[T](a: T): T = a
31
+ template gen1(name){.dirty.} =
32
+ gen1 name, asis
34
33
35
- template assertFalse * (bo ){.genSelf .} =
34
+ template gen2(name, op ){.dirty .} =
36
35
bind check
37
- check not bo
36
+ template name*(a, b){.genSelf.} =
37
+ check op(a, b)
38
+
39
+ gen1 assertFalse, `not`
40
+ gen1 assertTrue
38
41
39
42
template assertRaises*(typ: typedesc , cb: typed , va: varargs [untyped ]){.genSelf.} =
40
43
bind expect
@@ -51,14 +54,36 @@ template assertRaises*(typ: typedesc[TypeError], cb: typed, va: varargs[untyped]
51
54
else:
52
55
discard ## "not compile" is seen as Compile-time TypeError
53
56
54
- template assertIs* [T](a, b: T){.genSelf.} =
57
+ gen2 assertEqual, `==`
58
+ gen2 assertNotEqual, `!=`
59
+
60
+ gen2 assertIn, `in`
61
+ gen2 assertNotIn, `not_in`
62
+
63
+ template assertIsOrNotIs[T](a, b: T; op){.genSelf.} =
55
64
bind check
56
65
when T is (pointer |ptr |ref |proc|iterator):
57
- check a == b
66
+ check a op b
58
67
elif a is static or b is static :
59
- check a == b
68
+ check a op b
60
69
else:
61
- check a.addr == b.addr
70
+ check a.addr op b.addr
71
+
72
+ template assertIs*[T](a, b: T){.genSelf.} =
73
+ bind assertIsOrNotIs
74
+ assertIsOrNotIs(a, b, `==`)
75
+
76
+ template assertIsNot*[T](a, b: T){.genSelf.} =
77
+ bind assertIsOrNotIs
78
+ assertIsOrNotIs(a, b, `!=`)
79
+
80
+ gen2 assertLess, `<`
81
+ gen2 assertLessEqual, `<=`
82
+ gen2 assertGreater, `>`
83
+ gen2 assertGreaterEqual, `>=`
84
+
85
+ gen2 assertIsInstance, `is`
86
+ gen2 assertNotIsInstance, `is_not`
62
87
63
88
template addSkip(reason) = checkpoint reason ##\
64
89
## XXX: TODO: not really python-like
0 commit comments