; test harness for strint.atoi ; Registers: ; r8 - test address ; r9 - expected result ; r10 - actual length ; r11 - expected length li r8, tests li r12, end_of_tests next_test: ; Set up arguments and run test add r1, r8, 5 ; Start of test string mov r13, atoi_test_ret jmp stdlib.strint.atoi atoi_test_ret: ; Load reference data load_32 r9, [r8] ; Expected result sub r10, r2, r8 sub r10, r10, 5 ; Actual string length add r11, r8, 4 ; Address of expected length load_8 r11, [r11] ; Expected length ; Verify results cmp r1, r9 incorrect_result: jne incorrect_result cmp r10, r11 incorrect_length: jne incorrect_length ; Next test add r8, r8, 0x10 cmp r8, r12 jl next_test ; Done success: jmp success include ../src/stdlib @0x20000 tests: ; inlen is the number of input bytes the function is expected to consume ; addr result inlen instr @0x20000 U32 0 U8 0 "\0" @0x20010 U32 0 U8 1 "0\0" @0x20020 U32 1 U8 1 "1\0" @0x20030 U32 2 U8 1 "2:\0" @0x20040 U32 42 U8 2 "42\0" @0x20050 U32 67 U8 2 "67lol\0" @0x20060 U32 0x69a U8 5 "0x69a@\0" @0x20070 U32 0x4B4 U8 5 "0x4B4g\0" @0x20080 U32 0o23 U8 4 "0o239\0" @0x20090 U32 0b1011 U8 6 "0b1011\0" @0x200a0 U32 0b10001 U8 7 "0b100012\0" @0x200b0 U32 0xFFFFFFEB U8 3 "-21\0" ; Yuk @0x200c0 end_of_tests: