collapseos/tools/tests/unit/test_parse_z.asm

109 lines
1.3 KiB
NASM
Raw Normal View History

2019-10-05 10:26:21 +10:00
.equ RAMSTART 0x4000
; declare DIREC_LASTVAL manually so that we don't have to include directive.asm
.equ DIREC_LASTVAL RAMSTART
2019-05-18 00:00:30 +10:00
jp test
.inc "core.asm"
.inc "parse.asm"
.inc "lib/util.asm"
.inc "zasm/util.asm"
.inc "lib/parse.asm"
.inc "zasm/parse.asm"
2019-05-18 00:00:30 +10:00
; mocks. aren't used in tests
zasmGetPC:
2019-05-18 00:00:30 +10:00
zasmIsFirstPass:
symSelect:
symFindVal:
2019-05-18 00:00:30 +10:00
jp fail
testNum: .db 1
s99: .db "99", 0
s0x99: .db "0x99", 0
2019-05-18 13:00:57 +10:00
s0x100: .db "0x100", 0
2019-05-18 00:34:01 +10:00
s0b0101: .db "0b0101", 0
s0b01010101: .db "0b01010101", 0
2019-05-18 00:00:30 +10:00
sFoo: .db "Foo", 0
test:
ld hl, 0xffff
ld sp, hl
ld hl, s99
call parseLiteral
jp nz, fail
2019-05-20 21:50:23 +10:00
push ix \ pop hl
ld a, h
2019-05-18 00:00:30 +10:00
or a
jp nz, fail
2019-05-20 21:50:23 +10:00
ld a, l
2019-05-18 00:00:30 +10:00
cp 99
jp nz, fail
call nexttest
2019-05-18 13:00:57 +10:00
ld hl, s0x100
call parseLiteral
jp nz, fail
2019-05-20 21:50:23 +10:00
push ix \ pop hl
ld a, h
2019-05-18 13:00:57 +10:00
cp 1
jp nz, fail
2019-05-20 21:50:23 +10:00
ld a, l
2019-05-18 13:00:57 +10:00
or a
jp nz, fail
call nexttest
2019-05-18 00:00:30 +10:00
ld hl, sFoo
call parseLiteral
jp z, fail
call nexttest
2019-05-18 00:34:01 +10:00
ld hl, s0b0101
call parseLiteral
jp nz, fail
2019-05-20 21:50:23 +10:00
push ix \ pop hl
ld a, h
2019-05-18 00:34:01 +10:00
or a
jp nz, fail
2019-05-20 21:50:23 +10:00
ld a, l
2019-05-18 00:34:01 +10:00
cp 0b0101
jp nz, fail
call nexttest
ld hl, s0b01010101
call parseLiteral
jp nz, fail
2019-05-20 21:50:23 +10:00
push ix \ pop hl
ld a, h
2019-05-18 00:34:01 +10:00
or a
jp nz, fail
2019-05-20 21:50:23 +10:00
ld a, l
2019-05-18 00:34:01 +10:00
cp 0b01010101
jp nz, fail
call nexttest
2019-10-05 10:26:21 +10:00
.equ FOO 0x42
.equ BAR @+1
ld a, BAR
cp 0x43
jp nz, fail
call nexttest
2019-05-18 00:00:30 +10:00
; success
xor a
halt
nexttest:
ld a, (testNum)
inc a
ld (testNum), a
ret
fail:
ld a, (testNum)
halt