Capuchin - Unit Test Framework

Monkey Programming Forums/User Modules/Capuchin - Unit Test Framework

FelipeA(Posted 2014) [#1]
Hi everyone,

I want to share with you this framework I've been working on for testing my code. Currently is very basic and handles only boolean and numeric values, but I plan on adding more stuff to it.

I've already used it on my SAT module to test that it works correctly.

You can check the repo here:

https://github.com/ilovepixel/capuchin

And here you can see a small example of it:

running

format_code('
Import capuchin
Import mojo

Class NumberTest Extends Test Implements iSpec

Method New()
Super.New()
It("0 Should be equal to value", Self)
It("10 should be lower than value", Self)
It("99 should be grater or equal to value", Self)
It("25.6 should be lower or equal to to value", Self)
End

Method Execute:Void (testNum:Int, spec:Spec)
Select (testNum)
Case 0
spec.Expect(0).ToEqual(0)
'spec.Done()' <--- forcing a timeout
Case 1
spec.Expect(10).BeLowerThan(100)
spec.Done()
Case 2
spec.Expect(99).BeGreaterOrEqualTo(99)
spec.Done()
Case 3
spec.Expect(25.6).BeLowerOrEqualTo(25)
spec.Done()

End
End
End

Class BoolTest Extends Test Implements iSpec

Method New()
Super.New()
It("True should be equal to value", Self)
It("False should be equal to value", Self)
It("True should not be equal to value", Self)
It("False should not be equal to value", Self)
End

Method Execute:Void (testNum:Int, spec:Spec)
Select (testNum)
Case 0
spec.Expect(True).ToEqual(True)
spec.Done()
Case 1
spec.Expect(False).ToEqual(True) '<-- Forcing a fail
spec.Done()
Case 2
spec.Expect(True).NotEqual(False)
spec.Done()
Case 3
spec.Expect(False).NotEqual(True)
spec.Done()
End
End
End

Class GameTest Extends App

Field testEnv:TestEnviroment

Method OnCreate:Int ()
testEnv = New TestEnviroment()
testEnv.Describe("Checking numbers", New NumberTest())
testEnv.Describe("Checking booleans", New BoolTest())
testEnv.Start()
SetUpdateRate(60)
Return 0
End

Method OnUpdate:Int ()
testEnv.Update()
Return 0
End

Method OnRender:Int ()
Cls()
testEnv.Draw()
Return 0
End
End

Function Main:Int ()
New GameTest()
Return 0
End
')

To check the framework being used on a real monkey module you can check here:
http://dev.shin.cl/sat-monkey/tests/

Cheers,
Felipe