unit test for #100
unittest: the check macro will print only the non-literal part of the checked expression tests/run: added tunittests.nim as a single central executable where unittests could be added for quicker compilation/execution of the test suite
This commit is contained in:
parent
e88123fb17
commit
f9876d379d
4 changed files with 26 additions and 5 deletions
|
|
@ -106,7 +106,8 @@ macro check*(conditions: stmt): stmt =
|
|||
case conditions[1].kind
|
||||
of nnkInfix:
|
||||
proc rewriteBinaryOp(op: expr): stmt =
|
||||
template rewrite(op, left, right, lineInfoLit: expr, opLit, leftLit, rightLit: string): stmt =
|
||||
template rewrite(op, left, right, lineInfoLit: expr, opLit,
|
||||
leftLit, rightLit: string, printLhs, printRhs: bool): stmt =
|
||||
block:
|
||||
var
|
||||
lhs = left
|
||||
|
|
@ -114,8 +115,8 @@ macro check*(conditions: stmt): stmt =
|
|||
|
||||
if not `op`(lhs, rhs):
|
||||
checkpoint(lineInfoLit & ": Check failed: " & opLit)
|
||||
checkpoint(" " & leftLit & " was " & $lhs)
|
||||
checkpoint(" " & rightLit & " was " & $rhs)
|
||||
when printLhs: checkpoint(" " & leftLit & " was " & $lhs)
|
||||
when printRhs: checkpoint(" " & rightLit & " was " & $rhs)
|
||||
fail()
|
||||
|
||||
result = getAst(rewrite(
|
||||
|
|
@ -123,7 +124,9 @@ macro check*(conditions: stmt): stmt =
|
|||
op.lineinfo,
|
||||
op.toStrLit,
|
||||
op[1].toStrLit,
|
||||
op[2].toStrLit))
|
||||
op[2].toStrLit,
|
||||
op[1].kind notin nnkLiterals,
|
||||
op[2].kind notin nnkLiterals))
|
||||
|
||||
result = rewriteBinaryOp(conditions[1])
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue