diff --git a/test/TinyRAM/Spec/EndToEndSpec.hs b/test/TinyRAM/Spec/EndToEndSpec.hs index 91dae8b..7f1d006 100644 --- a/test/TinyRAM/Spec/EndToEndSpec.hs +++ b/test/TinyRAM/Spec/EndToEndSpec.hs @@ -37,6 +37,7 @@ spec = describe "TinyRAM end to end" $ do andTestCase andTestNegativeCase --andFlagTestCase bugged reported + andPreFlagTestCase cjmpTestCase jmpTestExampleNonTermCase negativeTestCase @@ -47,6 +48,8 @@ spec = describe "TinyRAM end to end" $ do addTestNegativeTestCase subTestCase --notTestCase --negative answer bugged + --notPreFlagTestCase + notFlagTestCase mullTestCase umulhTestCase smulhTestCase @@ -194,6 +197,20 @@ andTestCase = -- answer <- execute program (InputTape []) (InputTape []) -- answer `shouldBe` Right 0 +andPreFlagTestCase :: Spec +andPreFlagTestCase = + it "answers 0" $ do + let program = + construct + [ Mov (reg' 0) (imm 0), + Cmov (reg' 0) (imm 1), + Mov (reg' 2) (imm 58), + And (reg' 3) (reg' 2) (imm 15), + Answer (reg 0) + ] + answer <- execute program (InputTape []) (InputTape []) + answer `shouldBe` Right 0 + --; TinyRAM V=1.000 W=16 K=16 --mov r2, 58 --and r1, r2, -15 @@ -779,7 +796,7 @@ subTestCase = -- notTestCase :: Spec -- notTestCase = --- it "answers -11" $ do +-- it "answers 65524" $ do -- let program = -- construct -- [ Mov (reg' 1) (imm 11), @@ -787,7 +804,7 @@ subTestCase = -- Answer (reg 0) -- ] -- answer <- execute program (InputTape []) (InputTape []) --- answer `shouldBe` Right (Word (word16ToInteger (negate 11))) +-- answer `shouldBe` Right 65524 --mullTestCase --; TinyRAM V=1.000 W=16 K=16 @@ -795,6 +812,20 @@ subTestCase = --mull r1, r2, 2 --answer r1 +notFlagTestCase :: Spec +notFlagTestCase = + it "answers 65524" $ do + let program = + construct + [ Mov (reg' 1) (imm 11), + Not (reg' 0) (reg 1), + Cmov (reg' 0) (imm 1), + Answer (reg 0) + ] + answer <- execute program (InputTape []) (InputTape []) + answer `shouldBe` Right 65524 + + mullTestCase :: Spec mullTestCase = it "answers 10" $ do