|
- ; *** requirements ***
- ; ascii.h
- ; core
- ; stdio
- ; lib/ari
- ; lib/fmt
-
- testNum: .db 1
- ; Each time we call assertSP, we verify that our stack isn't imbalanced by
- ; comparing SP to its saved value. Whenever your "base" SP value change,
- ; generally at the beginning of a test routine, run "ld (testSP), sp" to have
- ; proper value saved to heap.
- testSP: .dw 0xffff
-
-
- STDIO_PUTC:
- out (0), a
- cp a
- ret
-
- STDIO_GETC:
- jp unsetZ
-
- assertZ:
- ret z
- ld hl, .msg
- call printstr
- jp fail
- .msg:
- .db "Z not set", CR, LF, 0
-
- assertNZ:
- ret nz
- ld hl, .msg
- call printstr
- jp fail
- .msg:
- .db "Z set", CR, LF, 0
-
- assertC:
- ret c
- ld hl, .msg
- call printstr
- jp fail
- .msg:
- .db "C not set", CR, LF, 0
-
- assertNC:
- ret nc
- ld hl, .msg
- call printstr
- jp fail
- .msg:
- .db "C set", CR, LF, 0
-
- ; Assert that A == B
- assertEQB:
- cp b
- ret z
- call printHex
- call printcrlf
- ld a, b
- call printHex
- call printcrlf
- ld hl, .msg
- call printstr
- jp fail
- .msg:
- .db "A != B", CR, LF, 0
-
- ; Assert that HL == DE
- assertEQW:
- ld a, h
- cp d
- jr nz, .fail
- ld a, l
- cp e
- ret z
- .fail:
- call printHexPair
- call printcrlf
- ex de, hl
- call printHexPair
- call printcrlf
- ld hl, .msg
- call printstr
- jp fail
- .msg:
- .db "HL != DE", CR, LF, 0
-
- ; Given a list of pointer to test data structures in HL and a pointer to a test
- ; routine in IX, call (IX) with HL pointing to the test structure until the list
- ; points to a zero. See testParseExpr in test_expr for an example usage.
- testList:
- push hl ; --> lvl 1
- call intoHL
- ld a, h
- or l
- jr z, .end
- call callIX
- call nexttest
- pop hl ; <-- lvl 1
- inc hl \ inc hl
- jr testList
- .end:
- pop hl ; <-- lvl 1
- ret
-
- ; test that SP == testSP
- assertSP:
- ld hl, (testSP)
- ; offset the fact that we call assertSP
- dec hl \ dec hl
- or a ; reset carry
- sbc hl, sp
- ret z
- ld hl, .msg
- call printstr
- jr fail
- .msg:
- .db "Wrong SP", CR, LF, 0
-
- nexttest:
- ld a, (testNum)
- inc a
- ld (testNum), a
- ret
-
- fail:
- ld a, (testNum)
- halt
|