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