diff options
author | bd <bdunahu@operationnull.com> | 2025-04-10 01:23:38 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-04-10 01:23:38 -0400 |
commit | 3eeebe73826906b1c598d5e5d207bfee936ed315 (patch) | |
tree | 9b750918dcc606a4a228503201f870249303cc7c /t | |
parent | e50d44464db7eb8e1c20755c862466ac8f7419b0 (diff) |
Messy data section
Diffstat (limited to 't')
-rw-r--r-- | t/parse.lisp | 103 |
1 files changed, 52 insertions, 51 deletions
diff --git a/t/parse.lisp b/t/parse.lisp index b32263a..5b23343 100644 --- a/t/parse.lisp +++ b/t/parse.lisp @@ -9,54 +9,55 @@ (in-suite parse-tests) -(test esrap-register-decimal-ten - (is (equal (list 'parse::rr 10) - (esrap:parse 'parse::register "$10")))) - -(test esrap-register-binary-ten - (is (equal (list 'parse::rr 10) - (esrap:parse 'parse::register "$0B1010")))) - -(test esrap-register-octal-ten - (is (equal (list 'parse::rr 10) - (esrap:parse 'parse::register "$0O12")))) - -(test esrap-register-hex-ten - (is (equal (list 'parse::rr 10) - (esrap:parse 'parse::register "$0XA")))) - -(test esrap-r-type-1 - (is (equal '(parse::r "ADD" (parse::rr 5) (parse::rr 8) (parse::rr 1)) - (esrap:parse 'parse:instr "ADD $1 $5 $8")))) - -(test esrap-r-type-2 - (is (equal '(parse::r "NOT" (parse::rr 5) (parse::rr 0) (parse::rr 1)) - (esrap:parse 'parse:instr "NOT $1 $5")))) - -(test esrap-r-type-3 - (is (equal '(parse::r "CMP" (parse::rr 1) (parse::rr 5) (parse::rr 0)) - (esrap:parse 'parse:instr "CMP $1 $5")))) - -(test esrap-i-type-1 - (is (equal '(parse::i "LOAD" (parse::rr 8) (parse::rr 9) (parse::imm 1)) - (esrap:parse 'parse:instr "LOAD $8 1($9)")))) - -(test esrap-i-type-2 - (is (equal '(parse::i "STORE" (parse::rr 3) (parse::rr 5) (parse::imm 3)) - (esrap:parse 'parse:instr "STORE $5 3($3)")))) - -(test esrap-i-type-3 - (is (equal '(parse::i "ORI" (parse::rr 5) (parse::rr 4) (parse::imm 2)) - (esrap:parse 'parse:instr "ORI $5 $4 2")))) - -(test esrap-j-type-1 - (is (equal '(parse::j "JMP" (parse::rr 3) (parse::imm 3)) - (esrap:parse 'parse:instr "JMP 3($3)")))) - -(test esrap-j-type-2 - (is (equal '(parse::j "JRL" (parse::rr 0) (parse::l "FOO")) - (esrap:parse 'parse:instr "JRL FOO")))) - -(test esrap-j-type-3 - (is (equal '(parse::j "PUSH" (parse::rr 1) (parse::imm 0)) - (esrap:parse 'parse:instr "PUSH $1")))) +(test esrap-register-bases + (is (equal '(parse::p + (parse::t + (parse::r "ADD" (parse::rr 10) (parse::rr 10) (parse::rr 10)))) + (esrap:parse 'parse::str->ast (format nil ".TEXT~%~tADD $0O012 $0B1010 $0XA~%"))))) + +(test esrap-instr-all-type-r + (is (equal + '(parse::p + (parse::t + (parse::r "ADDV" (parse::rr 1) (parse::rr 2) (parse::rr 3)) + (parse::r "NOT" (parse::rr 4) (parse::rr 0) (parse::rr 5)) + (parse::r "CMP" (parse::rr 6) (parse::rr 7) (parse::rr 0)))) + (esrap:parse 'parse::str->ast (format nil ".TEXT~%~tADDV $3 $1 $2 +~tNOT $5 $4~%~tCMP $6 $7~%"))))) + +(test esrap-instr-all-type-i + (is (equal + '(parse::p + (parse::t + (parse::i "LOADV" (parse::rr 8) (parse::rr 9) (parse::imm 1)) + (parse::i "STORE" (parse::rr 3) (parse::rr 5) (parse::imm 3)) + (parse::i "ADDI" (parse::rr 5) (parse::rr 4) (parse::imm 2)))) + (esrap:parse 'parse::str->ast (format nil ".TEXT~%~tLOADV $8 1($9) +~tSTORE $5 3($3)~%~tADDI $5 $4 2~%"))))) + +(test esrap-instr-type-all-type-j + (is (equal + '(parse::p + (parse::t + (parse::j "JMP" (parse::rr 3) (parse::imm 3)) + (parse::j "JRL" (parse::rr 0) (parse::l "FOO")) + (parse::j "PUSH" (parse::rr 5) (parse::imm 0)))) + (esrap:parse 'parse::str->ast (format nil ".TEXT~%~tJMP 3($3) +~tJRL FOO~%~tPUSH $5~%"))))) + +(test esrap-instr-type-all-lazy-spaces + (is (equal + '(parse::p + (parse::t + (parse::j "JMP" (parse::rr 3) (parse::imm 3)) + (parse::j "JRL" (parse::rr 0) (parse::l "FOO")) + (parse::j "PUSH" (parse::rr 5) (parse::imm 0)))) + (esrap:parse 'parse::str->ast (format nil "~t~%.TEXT~t~%JMP 3($3)~t +JRL FOO~t~%PUSH $5~%"))))) + +(test esrap-data-singleton + (is (equal + '(parse::p + (parse::d + 1))) + (esrap:parse 'parse:str->ast (format nil ".DATA~%~tA 1~%")))) |