110 lines
2.3 KiB
Nim
110 lines
2.3 KiB
Nim
import einheit
|
|
|
|
testSuite UnitTests:
|
|
var
|
|
testObj: int
|
|
testArray: array[4, int]
|
|
|
|
proc doThings()=
|
|
# This proc won't be invoked as a test
|
|
self.testObj = 400
|
|
self.assert(self.testObj == 400)
|
|
|
|
method setup()=
|
|
self.testObj = 90
|
|
for i in 0 ..< self.testArray.len():
|
|
self.testArray[i] = i
|
|
|
|
method tearDown()=
|
|
self.testObj = 0
|
|
|
|
method testForB()=
|
|
var b = 4
|
|
self.doThings()
|
|
self.assert(b == 4)
|
|
|
|
method testArrayAssert()=
|
|
self.assert(self.testArray == [0,1,2])
|
|
|
|
method testForC()=
|
|
var c = 0
|
|
# supposed to fail
|
|
self.assert(c == 1)
|
|
|
|
|
|
testSuite UnitTestsNew:
|
|
var
|
|
testObj: int
|
|
|
|
method setup()=
|
|
self.testObj = 90
|
|
|
|
method tearDown()=
|
|
self.testObj = 0
|
|
|
|
method testTestObj()=
|
|
self.assert(self.testObj == 90)
|
|
|
|
method testStuff()=
|
|
self.assert("Stuff" == "Stuff")
|
|
|
|
proc returnTrue(): bool=
|
|
return false
|
|
|
|
method testMore()=
|
|
var more = 23
|
|
self.assert(more == 1)
|
|
|
|
method testMoreMore()=
|
|
self.assert(self.returnTrue())
|
|
|
|
# Inheritance!
|
|
testSuite TestInherit of UnitTestsNew:
|
|
## This will call every test defined in UnitTestsNew
|
|
|
|
proc raisesOs()=
|
|
# This proc won't be invoked as a test
|
|
raise newException(OSError, "Oh no! OS malfunction!")
|
|
|
|
method testRaises()=
|
|
|
|
# Two ways of asserting
|
|
self.assertRaises OSError:
|
|
self.raisesOs()
|
|
|
|
self.assertRaises(OSError, self.raisesOs())
|
|
|
|
|
|
testSuite MoreInheritance of TestInherit:
|
|
|
|
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
|
|
# implementation
|
|
self.setupUnitTestsNew()
|
|
|
|
# This will make one of the tests inherited from UnitTestsNew
|
|
# fail. This is expected.
|
|
self.testObj = 12345
|
|
|
|
method tearDown()=
|
|
# Calling the direct parent's tearDown method
|
|
self.tearDownTestInherit()
|
|
self.testObj = 0
|
|
|
|
method testTestObj()=
|
|
# This method is overwritten. To call the base method,
|
|
# simply use
|
|
# self.testTestObj_UnitTestsNew()
|
|
# However, currently this method will be run
|
|
# IN ADDITION to the base class's method.
|
|
# This one will pass, the other will fail
|
|
self.assert(self.testObj == 12345)
|
|
|
|
method testNewObj()=
|
|
self.assert(self.testObj == 12345)
|
|
|
|
|
|
when isMainModule:
|
|
runTests()
|