Fix proc definition style
This commit is contained in:
parent
c802b8779f
commit
04ffcaccfd
2 changed files with 73 additions and 60 deletions
70
einheit.nim
70
einheit.nim
|
|
@ -8,7 +8,7 @@
|
|||
## .. code:: nim
|
||||
##
|
||||
## testSuite UnitTests:
|
||||
## proc thisIsATest()=
|
||||
## proc thisIsATest() =
|
||||
## self.check(1 == 1)
|
||||
## self.checkRaises(OSError, newException(OSError, "OS is exploding!"))
|
||||
##
|
||||
|
|
@ -19,9 +19,11 @@ import typetraits
|
|||
when not defined(ECMAScript):
|
||||
import terminal
|
||||
|
||||
|
||||
|
||||
# ----------------- Helper Procs and Macros -----------------------------------
|
||||
|
||||
proc `$`*[T](ar: openarray[T]): string=
|
||||
proc `$`*[T](ar: openarray[T]): string =
|
||||
## Converts an array into a string
|
||||
result = "["
|
||||
if ar.len() > 0:
|
||||
|
|
@ -74,11 +76,11 @@ macro toString*(obj: typed): untyped =
|
|||
let kind = obj.getType().typeKind
|
||||
case kind:
|
||||
of ntyTuple, ntyObject:
|
||||
template toStrAst(obj): string=
|
||||
template toStrAst(obj): string =
|
||||
einheit.objToStr(obj)
|
||||
result = getAst(toStrAst(obj))
|
||||
else:
|
||||
template toStrAst(obj): string=
|
||||
template toStrAst(obj): string =
|
||||
$(obj)
|
||||
result = getAst(toStrAst(obj))
|
||||
|
||||
|
|
@ -113,21 +115,21 @@ type
|
|||
|
||||
# -- Methods for the TestSuite base --
|
||||
|
||||
method setup*(suite: TestSuite)=
|
||||
method setup*(suite: TestSuite) =
|
||||
## Base method for setup code
|
||||
discard
|
||||
|
||||
method tearDown*(suite: TestSuite)=
|
||||
method tearDown*(suite: TestSuite) =
|
||||
## Base method for tearDown code
|
||||
discard
|
||||
|
||||
method runTests*(suite: TestSuite)=
|
||||
method runTests*(suite: TestSuite) =
|
||||
## Base method for running tests
|
||||
discard
|
||||
|
||||
# ------------------------------------
|
||||
|
||||
template returnException(name, testName, snip, vals, pos, posRel)=
|
||||
template returnException(name, testName, snip, vals, pos, posRel) =
|
||||
## private template for raising an exception
|
||||
var
|
||||
filename = posRel.filename
|
||||
|
|
@ -195,13 +197,13 @@ template recursive(node, action): expr {.dirty.} =
|
|||
result.add helper(c)
|
||||
discard helper(node)
|
||||
|
||||
template strRep(n: NimNode): untyped=
|
||||
template strRep(n: NimNode): untyped =
|
||||
toString(n)
|
||||
|
||||
template tableEntry(n: NimNode): untyped=
|
||||
template tableEntry(n: NimNode): untyped =
|
||||
newNimNode(nnkExprColonExpr).add(n.toStrLit(), getAst(strRep(n)))
|
||||
|
||||
macro getSyms(code:untyped): untyped=
|
||||
macro getSyms(code:untyped): untyped =
|
||||
## This macro gets all symbols and values of an expression
|
||||
## into a table
|
||||
##
|
||||
|
|
@ -238,7 +240,7 @@ macro getSyms(code:untyped): untyped=
|
|||
tableCall.add(tableConstr)
|
||||
result = tableCall
|
||||
else:
|
||||
template emptyTable()=
|
||||
template emptyTable() =
|
||||
initTable[string, string]()
|
||||
result = getAst(emptyTable())
|
||||
|
||||
|
|
@ -296,11 +298,11 @@ macro testSuite*(head: untyped, body: untyped): untyped =
|
|||
## var
|
||||
## suiteVar: string
|
||||
##
|
||||
## method setup()=
|
||||
## method setup() =
|
||||
## ## do setup code here
|
||||
## self.suiteVar = "Testing"
|
||||
##
|
||||
## method testAddingString()=
|
||||
## method testAddingString() =
|
||||
## ## adds a string to the suiteVar
|
||||
## self.suiteVar &= " 123"
|
||||
## self.check(self.suiteVar == "Testing 123")
|
||||
|
|
@ -315,7 +317,7 @@ macro testSuite*(head: untyped, body: untyped): untyped =
|
|||
let objReference = "self"
|
||||
var exportClass: bool = false
|
||||
|
||||
template importRequiredLibs()=
|
||||
template importRequiredLibs() =
|
||||
import strutils
|
||||
import tables
|
||||
import typetraits
|
||||
|
|
@ -410,7 +412,7 @@ macro testSuite*(head: untyped, body: untyped): untyped =
|
|||
# return `baseName`(self)
|
||||
# result.add(super)
|
||||
|
||||
template setNodeName(n2, procName, typeName)=
|
||||
template setNodeName(n2, procName, typeName) =
|
||||
if n2.name.kind == nnkIdent:
|
||||
procName = $(n2.name.toStrLit())
|
||||
n2.name = ident(procName & typeName)
|
||||
|
|
@ -427,12 +429,12 @@ macro testSuite*(head: untyped, body: untyped): untyped =
|
|||
result.add(n2)
|
||||
|
||||
|
||||
template runTestsProc(self, typeName, baseMethod, typeMethod)=
|
||||
method typeMethod(self: typeName)=
|
||||
template runTestsProc(self, typeName, baseMethod, typeMethod) =
|
||||
method typeMethod(self: typeName) =
|
||||
when compiles(self.baseMethod()):
|
||||
self.baseMethod()
|
||||
|
||||
method runTests(self: typeName)=
|
||||
method runTests(self: typeName) =
|
||||
self.typeMethod()
|
||||
|
||||
var baseMethodName = ident("runTests" & $baseName.toStrLit())
|
||||
|
|
@ -472,12 +474,12 @@ macro testSuite*(head: untyped, body: untyped): untyped =
|
|||
discard
|
||||
|
||||
if not foundSetup:
|
||||
template setupProc(self, typeName, setupProc)=
|
||||
template setupProc(self, typeName, setupProc) =
|
||||
method setup(self: typeName)
|
||||
method setupProc(self: typeName)
|
||||
|
||||
template setupDecl(self, baseMethod)=
|
||||
method setup()=
|
||||
template setupDecl(self, baseMethod) =
|
||||
method setup() =
|
||||
when compiles(self.baseMethod()):
|
||||
self.baseMethod()
|
||||
|
||||
|
|
@ -488,12 +490,12 @@ macro testSuite*(head: untyped, body: untyped): untyped =
|
|||
body.add(setupBaseAst[0])
|
||||
|
||||
if not foundTeardown:
|
||||
template teardownProc(self, typeName, tdProc)=
|
||||
template teardownProc(self, typeName, tdProc) =
|
||||
method tearDown(self: typeName)
|
||||
method tdProc(self: typeName)
|
||||
|
||||
template teardownDecl(self, baseMethod)=
|
||||
method tearDown()=
|
||||
template teardownDecl(self, baseMethod) =
|
||||
method tearDown() =
|
||||
when compiles(self.baseMethod()):
|
||||
self.baseMethod()
|
||||
|
||||
|
|
@ -506,10 +508,10 @@ macro testSuite*(head: untyped, body: untyped): untyped =
|
|||
baseTearMethodName))
|
||||
body.add(teardownBaseAst[0])
|
||||
|
||||
template setTestName(self, procName)=
|
||||
template setTestName(self, procName) =
|
||||
self.currentTestName = procName
|
||||
|
||||
template tryBlock(self, testCall)=
|
||||
template tryBlock(self, testCall) =
|
||||
self.numTests += 1
|
||||
try:
|
||||
testCall
|
||||
|
|
@ -645,9 +647,9 @@ macro testSuite*(head: untyped, body: untyped): untyped =
|
|||
|
||||
var typeDecl: NimNode
|
||||
|
||||
template declareTypeExport(tname, bname)=
|
||||
template declareTypeExport(tname, bname) =
|
||||
type tname* = ref object of bname
|
||||
template declareType(tname, bname)=
|
||||
template declareType(tname, bname) =
|
||||
type tname = ref object of bname
|
||||
|
||||
if baseName == nil:
|
||||
|
|
@ -686,13 +688,13 @@ macro testSuite*(head: untyped, body: untyped): untyped =
|
|||
|
||||
result.add(runTests)
|
||||
|
||||
template addTestSuite(typeName)=
|
||||
template addTestSuite(typeName) =
|
||||
testSuites.add(typeName())
|
||||
|
||||
result.add(getAst(addTestSuite(typeName)))
|
||||
|
||||
|
||||
proc printRunning(suite: TestSuite)=
|
||||
proc printRunning(suite: TestSuite) =
|
||||
var
|
||||
numTicks = 80 - 12 - len(suite.name)
|
||||
ticks = ""
|
||||
|
|
@ -710,7 +712,7 @@ proc printRunning(suite: TestSuite)=
|
|||
echo "\n[Running] $1 $2\n".format(suite.name, ticks)
|
||||
|
||||
|
||||
proc printPassedTests(suite: TestSuite)=
|
||||
proc printPassedTests(suite: TestSuite) =
|
||||
# Output red if tests didn't pass, green otherwise
|
||||
var color = fgGreen
|
||||
|
||||
|
|
@ -735,7 +737,7 @@ proc printPassedTests(suite: TestSuite)=
|
|||
else:
|
||||
echo "\n$1 tests passed for $2.$3\n".format(passedStr, suite.name, ticks)
|
||||
|
||||
proc printSummary(totalTestsPassed: int, totalTests: int)=
|
||||
proc printSummary(totalTestsPassed: int, totalTests: int) =
|
||||
var summaryColor = fgGreen
|
||||
|
||||
if totalTestsPassed != totalTests:
|
||||
|
|
@ -761,7 +763,7 @@ proc printSummary(totalTestsPassed: int, totalTests: int)=
|
|||
echo "\n[Summary]"
|
||||
echo "\n $1 tests passed.".format(passedStr)
|
||||
|
||||
proc runTests*()=
|
||||
proc runTests*() =
|
||||
## The method that runs the tests. Invoke
|
||||
## after setting up all of the tests and
|
||||
## usually inside a "when isMainModule" block
|
||||
|
|
|
|||
63
test.nim
63
test.nim
|
|
@ -1,32 +1,34 @@
|
|||
import einheit
|
||||
|
||||
|
||||
|
||||
testSuite UnitTests:
|
||||
var
|
||||
testObj: int
|
||||
testArray: array[4, int]
|
||||
|
||||
proc doThings()=
|
||||
proc doThings() =
|
||||
# This proc won't be invoked as a test
|
||||
self.testObj = 400
|
||||
self.check(self.testObj == 400)
|
||||
|
||||
method setup()=
|
||||
method setup() =
|
||||
self.testObj = 90
|
||||
for i in 0 ..< self.testArray.len():
|
||||
self.testArray[i] = i
|
||||
|
||||
method tearDown()=
|
||||
method tearDown() =
|
||||
self.testObj = 0
|
||||
|
||||
method testForB()=
|
||||
method testForB() =
|
||||
var b = 4
|
||||
self.doThings()
|
||||
self.check(b == 4)
|
||||
|
||||
method testArrayAssert()=
|
||||
method testArrayAssert() =
|
||||
self.check(self.testArray == [0,1,2])
|
||||
|
||||
method testForC()=
|
||||
method testForC() =
|
||||
var c = 0
|
||||
# supposed to fail
|
||||
self.check(c == 1)
|
||||
|
|
@ -36,37 +38,46 @@ testSuite UnitTestsNew:
|
|||
var
|
||||
testObj: int
|
||||
|
||||
method setup()=
|
||||
method setup() =
|
||||
self.testObj = 90
|
||||
|
||||
method tearDown()=
|
||||
method tearDown() =
|
||||
self.testObj = 0
|
||||
|
||||
method testTestObj()=
|
||||
method testTestObj() =
|
||||
self.check(self.testObj == 90)
|
||||
|
||||
method testStuff()=
|
||||
method testStuff() =
|
||||
self.check("Stuff" == "Stuff")
|
||||
|
||||
proc returnTrue(): bool=
|
||||
result = false
|
||||
|
||||
method testMore()=
|
||||
method testMore() =
|
||||
var more = 23
|
||||
self.check(more == 1)
|
||||
|
||||
method testMoreMore()=
|
||||
method testMoreMore() =
|
||||
self.check(self.returnTrue())
|
||||
|
||||
method testValues() =
|
||||
proc foo : int =
|
||||
return 1
|
||||
|
||||
proc bar : int =
|
||||
return 2
|
||||
let (a, b) = (123, 321)
|
||||
self.check(a == b and foo() == bar())
|
||||
|
||||
# Inheritance!
|
||||
testSuite TestInherit of UnitTestsNew:
|
||||
## This will call every test defined in UnitTestsNew
|
||||
|
||||
proc raisesOs()=
|
||||
proc raisesOs() =
|
||||
# This proc won't be invoked as a test
|
||||
raise newException(SystemError, "Oh no! OS malfunction!")
|
||||
|
||||
method testRaises()=
|
||||
method testRaises() =
|
||||
|
||||
# Two ways of checking
|
||||
self.checkRaises OSError:
|
||||
|
|
@ -77,7 +88,7 @@ testSuite TestInherit of UnitTestsNew:
|
|||
|
||||
testSuite MoreInheritance of TestInherit:
|
||||
|
||||
method setup()=
|
||||
method setup() =
|
||||
# This must be called if overriding setup if you want
|
||||
# base class setup functionality. You can also call
|
||||
# self.setupTestInherit() to call the direct parent's
|
||||
|
|
@ -88,12 +99,12 @@ testSuite MoreInheritance of TestInherit:
|
|||
# fail. This is expected.
|
||||
self.testObj = 12345
|
||||
|
||||
method tearDown()=
|
||||
method tearDown() =
|
||||
# Calling the direct parent's tearDown method
|
||||
self.tearDownTestInherit()
|
||||
self.testObj = 0
|
||||
|
||||
method testTestObj()=
|
||||
method testTestObj() =
|
||||
# This method is overwritten. To call the base method,
|
||||
# simply use
|
||||
# self.testTestObj_UnitTestsNew()
|
||||
|
|
@ -102,13 +113,13 @@ testSuite MoreInheritance of TestInherit:
|
|||
# This one will pass, the other will fail
|
||||
self.check(self.testObj == 12345)
|
||||
|
||||
method testNewObj()=
|
||||
method testNewObj() =
|
||||
self.check(self.testObj == 12345)
|
||||
|
||||
proc doStuff(arg: int, arg2: string): string=
|
||||
proc doStuff(arg: int, arg2: string): string =
|
||||
result = $arg & arg2
|
||||
|
||||
method testRefObject()=
|
||||
method testRefObject() =
|
||||
type
|
||||
TestObj = ref object
|
||||
t: int
|
||||
|
|
@ -117,12 +128,12 @@ testSuite MoreInheritance of TestInherit:
|
|||
d = TestObj(t: 3)
|
||||
k = TestObj(t: 30)
|
||||
|
||||
proc `==`(d: TestObj, d2: TestObj): bool=
|
||||
proc `==`(d: TestObj, d2: TestObj): bool =
|
||||
result = d.t == d2.t
|
||||
|
||||
self.check(d == k)
|
||||
|
||||
method testObject()=
|
||||
method testObject() =
|
||||
type
|
||||
TestObj = object
|
||||
t: int
|
||||
|
|
@ -131,13 +142,13 @@ testSuite MoreInheritance of TestInherit:
|
|||
d = TestObj(t: 3)
|
||||
k = TestObj(t: 30)
|
||||
|
||||
proc `==`(d: TestObj, d2: TestObj): bool=
|
||||
proc `==`(d: TestObj, d2: TestObj): bool =
|
||||
result = d.t == d2.t
|
||||
|
||||
self.check(d != k)
|
||||
self.check(d == k)
|
||||
|
||||
method testComplexObject()=
|
||||
method testComplexObject() =
|
||||
type
|
||||
Obj1 = object
|
||||
e: string
|
||||
|
|
@ -149,7 +160,7 @@ testSuite MoreInheritance of TestInherit:
|
|||
result = false
|
||||
self.check(x.isObj(p))
|
||||
|
||||
method testTuple()=
|
||||
method testTuple() =
|
||||
type
|
||||
Person = tuple[name: string, age: int]
|
||||
|
||||
|
|
@ -160,7 +171,7 @@ testSuite MoreInheritance of TestInherit:
|
|||
self.check(t != r)
|
||||
self.check(t == r)
|
||||
|
||||
method testComplex()=
|
||||
method testComplex() =
|
||||
var
|
||||
a = 5
|
||||
s = "stuff"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue