Skip to content

Willem3141/knighttest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

knighttest

A quick-and-dirty unit test runner for KnightOS. This still is heavy work in progress.

Writing tests

To add tests, edit the file tests.asm. Create a function that performs the test, like this:

testSomething:
    ; perform the test
    
    ; if passed:
    kjp(pass)
    ; if failed:
    kjp(fail)

Then in the test table at the top of the file, insert the name of your test, and increment the number:

tests:
    .db 2 ; number of tests    ; <- incremented
    .dw testTrivial
    .dw testSomething          ; <- added

Now recompile the test runner and run it.

Debugging

knighttest supports a very rudimentary way of debugging. If a test fails, you can look what is going on by doing this:

    kjp(printDebugAndHalt)

Now, the values of the d, e, h and l registers will be printed to the screen and the execution will halt (jr $).

Macros

The test runner provides several macros that can be used to write tests more easily.

Macro Description
assertAEqualTo(expected) Fails if a doesn't match the expected value.
assertBEqualTo(expected) Fails if b doesn't match the expected value.
assertCEqualTo(expected) Fails if c doesn't match the expected value.
assertDEqualTo(expected) Fails if d doesn't match the expected value.
assertEEqualTo(expected) Fails if e doesn't match the expected value.
assertHEqualTo(expected) Fails if h doesn't match the expected value.
assertLEqualTo(expected) Fails if l doesn't match the expected value.
assertBCEqualTo(expected) Fails if bc doesn't match the expected value.
assertDEEqualTo(expected) Fails if de doesn't match the expected value.
assertHLEqualTo(expected) Fails if hl doesn't match the expected value.
assertIXEqualTo(expected) Fails if ix doesn't match the expected value.

About

Quick-and-dirty unit test runner for KnightOS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published