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:
Zahary Karadjov 2012-03-10 17:26:34 +02:00
commit f9876d379d
4 changed files with 26 additions and 5 deletions

View file

@ -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])