Capuchin - Unit Test Framework

Monkey 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

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