evunit 1.3.4

A unit testing program for the Game Boy
Documentation
# Any configurations at the top of the file are global and apply to all tests.
a = 1
sp = 0xE000

# The list of crash addresses can be appended to.
# crash = "crash"
# Or, by using an array, they can be overwritten.
crash = ["crash", 0x0038]

# You can define additional exits
exit = [0x4000, 0xF000]

[add-one]
b = 1
[add-one.result]
a = 2

[add-two]
b = 2
[add-two.result]
a = 3

[add-fail]
b = 3
[add-fail.result]
a = 3

# A test can have no intended result.
# In this case, the test will pass unless the program crashes.
[add-anything]
b = 42

[debug]
pc = "DebugTest"
# You can also redefine the "caller" address (default is 0xFFFF)
# This acts as an exit address.
caller = "DebugTest.exit"

[crash-test]
pc = "CrashTest"

[timeout]
pc = "Timeout"

[variable]
"[wVariable]" = 100
pc = "VariableTest"
[variable.result]
"[wVariable]" = 200

[string]
"[wString]" = ["Hello, world!", 0]
pc = "StringTest"
[string.result]
"f.z" = true

# Tests whether hram is writable
[high-memory]
pc = "HighMemoryTest"
a = 69
[high-memory.result]
a = 69
b = 69

# Test whether dump contains test values
# It should be checked in the memory dump whether [wVariable] actually contains the given value
[dump]
pc = "OpcodeTest"
a = 0
"[wVariable]" = 0x55
[dump.result]
a = 10

# Test whether integers can be used instead of labels as memory addresses
[unlabeled-memory]
pc = "UnlabeledMemoryTest"
a = 0
hl = 0xC123
"[0xC123]" = 0x71
[unlabeled-memory.result]
a = 0x71

# Test whether values can be pushed onto the stack and are in the correct order
[stack]
pc = "StackTest"
a = 0
b = 0
stack = [ 0xDE, 0xAD ]
[stack.result]
a = 0xDE
b = 0xAD