From 8216e76b04c063754edc7bcf26f3f9acf91c56f5 Mon Sep 17 00:00:00 2001 From: Konarak Date: Mon, 1 Aug 2022 14:59:06 +0530 Subject: [PATCH] add initial tests --- assembler/test/dune | 3 +++ assembler/test/test_hack.ml | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 assembler/test/dune create mode 100644 assembler/test/test_hack.ml diff --git a/assembler/test/dune b/assembler/test/dune new file mode 100644 index 0000000..ac39ea9 --- /dev/null +++ b/assembler/test/dune @@ -0,0 +1,3 @@ +(tests + (names test_hack) + (libraries hack ounit2)) diff --git a/assembler/test/test_hack.ml b/assembler/test/test_hack.ml new file mode 100644 index 0000000..6ff60d7 --- /dev/null +++ b/assembler/test/test_hack.ml @@ -0,0 +1,27 @@ +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