nand2tetris/assembler/test/test_hack.ml
2022-08-01 14:59:06 +05:30

28 lines
604 B
OCaml

open OUnit2
open Hack.Ast
open Hack.Translate
let peq case value = assert_equal value (parse case)
let test_parse_g_instr _ = peq "(LOOP)" (Ginstr "LOOP")
let test_parse_a_instr _ =
peq "@100" (Aconst 100);
peq "@ABC" (Ainstr "ABC")
;;
let test_parse_c_instr _ =
peq "M-D" (Cinstr ("", "M-D", ""));
peq "0;JMP" (Cinstr ("", "0", "JMP"));
peq "D=A+1" (Cinstr ("D", "A+1", ""))
;;
let suite =
"suite"
>::: [ "G Instruction" >:: test_parse_g_instr
; "A Instruction" >:: test_parse_a_instr
; "C Instruction" >:: test_parse_c_instr
]
;;
let () = run_test_tt_main suite