Skip to content

Commit 05e1e70

Browse files
committed
feat(Lib/unittest): assert{[Not]{IsInstance,In},IsNot,{Greater,Less}[Equal]}
1 parent 899f5ee commit 05e1e70

File tree

1 file changed

+39
-14
lines changed

1 file changed

+39
-14
lines changed

src/pylib/Lib/unittest.nim

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,22 @@ macro genSelf(templ) =
2222
nTempl.params.insert 1, newIdentDefs(ident"self", bindSym"TestCase")
2323
result.add nTempl
2424

25-
template assertEqual*(a, b){.genSelf.} =
25+
template gen1(name, op){.dirty.} =
2626
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
3433
35-
template assertFalse*(bo){.genSelf.} =
34+
template gen2(name, op){.dirty.} =
3635
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
3841
3942
template assertRaises*(typ: typedesc, cb: typed, va: varargs[untyped]){.genSelf.} =
4043
bind expect
@@ -51,14 +54,36 @@ template assertRaises*(typ: typedesc[TypeError], cb: typed, va: varargs[untyped]
5154
else:
5255
discard ## "not compile" is seen as Compile-time TypeError
5356
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.} =
5564
bind check
5665
when T is (pointer|ptr|ref|proc|iterator):
57-
check a == b
66+
check a op b
5867
elif a is static or b is static:
59-
check a == b
68+
check a op b
6069
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`
6287
6388
template addSkip(reason) = checkpoint reason ##\
6489
## XXX: TODO: not really python-like

0 commit comments

Comments
 (0)