diff --git a/test/TinyRAM/Spec/EndToEndSpec.hs b/test/TinyRAM/Spec/EndToEndSpec.hs index 926fc51..44ac4d4 100644 --- a/test/TinyRAM/Spec/EndToEndSpec.hs +++ b/test/TinyRAM/Spec/EndToEndSpec.hs @@ -56,22 +56,30 @@ spec = describe "TinyRAM end to end" $ do shlFlagTestCase shrTestCase - cmpaeEqualTestCase - cmpaeGreaterTestCase - --cmpaeLessTestCase --bugged reported - --cmpaeNegTestCase --bugged reported - cmpaEqualTestCase - cmpaGreaterTestCase - --cmpaLessTestCase --bugged reported - --cmpaNegTestCase --bugged reported - cmpeEqualTestCase - -- cmpeGreaterTestCase --bugged reported - --cmpeLessTestCase --bugged reported - --cmpeNegTestCase --bugged reported - cmpgeEqualTestCase - cmpgeGreaterTestCase - --cmpgeLessTestCase --bugged reported + -- cmpaeTestCaseL --bugged reported + cmpaeTestCaseE + cmpaeTestCaseG + --cmpaeNegTestCaseG --bugged reported + cmpaeNegTestCaseE + cmpaeNegTestCaseL + cmpaTestCaseE + cmpaTestCaseG + --cmpaTestCaseL --bugged reported + --cmpaNegTestCaseG --bugged reported + --cmpaNegTestCaseL --bugged reported + --cmpaNegTestCaseE --bugged reported + cmpeTestCaseE + -- cmpeTestCaseG --bugged reported + --cmpeTestCaseL --bugged reported + --cmpeNegTestCaseG --bugged reported + cmpeNegTestCaseE + cmpeNegTestCaseL + cmpgeTestCaseE + cmpgeTestCaseG + --cmpgeTestCaseL --bugged reported cmpgeNegTestCase + --cmpgeNegTestCaseE + --cmpgeNegTestCaseG --answerR1TestCase --bugged reported @@ -216,8 +224,8 @@ cjmpTestCase = --cmov r1, 1 --answer r1 -cmpaeEqualTestCase :: Spec -cmpaeEqualTestCase = +cmpaeTestCaseE :: Spec +cmpaeTestCaseE = it "answers 1" $ do let program = construct @@ -231,17 +239,24 @@ cmpaeEqualTestCase = answer <- execute program (InputTape []) (InputTape []) answer `shouldBe` Right 1 ---; TinyRAM V=1.000 W=16 K=16 ---mov r1, 0 ---mov r2, 2 ---mov r3, 1 ---cmpae r2, r3 ---cmov r1, 1 ---answer r1 +-- cmpaeTestCaseL :: Spec +-- cmpaeTestCaseL = +-- it "answers 1" $ do +-- let program = +-- construct +-- [ Mov (reg' 0) (imm 0), +-- Mov (reg' 2) (imm 1), +-- Mov (reg' 3) (imm 2), +-- Cmpae (reg' 2) (reg 3), +-- Cmov (reg' 0) (imm 1), +-- Answer (reg 0) +-- ] +-- answer <- execute program (InputTape []) (InputTape []) +-- answer `shouldBe` Right 1 -cmpaeGreaterTestCase :: Spec -cmpaeGreaterTestCase = - it "answers 1" $ do +cmpaeTestCaseG :: Spec +cmpaeTestCaseG = + it "answers 0" $ do let program = construct [ Mov (reg' 0) (imm 0), @@ -254,6 +269,14 @@ cmpaeGreaterTestCase = answer <- execute program (InputTape []) (InputTape []) answer `shouldBe` Right 1 +--; TinyRAM V=1.000 W=16 K=16 +--mov r1, 0 +--mov r2, 2 +--mov r3, 1 +--cmpae r2, r3 +--cmov r1, 1 +--answer r1 + --; TinyRAM V=1.000 W=16 K=16 --mov r1, 0 --mov r2, 1 @@ -263,23 +286,8 @@ cmpaeGreaterTestCase = --answer r1 --Should be 0 --- cmpaeLessTestCase :: Spec --- cmpaeLessTestCase = --- it "answers 1" $ do --- let program = --- construct --- [ Mov (reg' 0) (imm 0), --- Mov (reg' 2) (imm 1), --- Mov (reg' 3) (imm 2), --- Cmpae (reg' 2) (reg 3), --- Cmov (reg' 0) (imm 1), --- Answer (reg 0) --- ] --- answer <- execute program (InputTape []) (InputTape []) --- answer `shouldBe` Right 1 - --- cmpaeNegTestCase :: Spec --- cmpaeNegTestCase = +-- cmpaeNegTestCaseG :: Spec +-- cmpaeNegTestCaseG = -- it "answers 0" $ do -- let program = -- construct @@ -293,6 +301,36 @@ cmpaeGreaterTestCase = -- answer <- execute program (InputTape []) (InputTape []) -- answer `shouldBe` Right 0 +cmpaeNegTestCaseE :: Spec +cmpaeNegTestCaseE = + it "answers 1" $ do + let program = + construct + [ Mov (reg' 0) (imm 0), + Mov (reg' 2) (imm (negate 2)), + Mov (reg' 3) (imm (negate 2)), + Cmpae (reg' 2) (reg 3), + Cmov (reg' 0) (imm 1), + Answer (reg 0) + ] + answer <- execute program (InputTape []) (InputTape []) + answer `shouldBe` Right 1 + +cmpaeNegTestCaseL :: Spec +cmpaeNegTestCaseL = + it "answers 1" $ do + let program = + construct + [ Mov (reg' 0) (imm 0), + Mov (reg' 2) (imm (negate 2)), + Mov (reg' 3) (imm 2), + Cmpae (reg' 2) (reg 3), + Cmov (reg' 0) (imm 1), + Answer (reg 0) + ] + answer <- execute program (InputTape []) (InputTape []) + answer `shouldBe` Right 1 + --; TinyRAM V=1.000 W=16 K=16 --mov r1, 0 --mov r2, 2 @@ -301,8 +339,8 @@ cmpaeGreaterTestCase = --cmov r1, 1 --answer r1 -cmpaEqualTestCase :: Spec -cmpaEqualTestCase = +cmpaTestCaseE :: Spec +cmpaTestCaseE = it "answers 1" $ do let program = construct @@ -324,8 +362,8 @@ cmpaEqualTestCase = --cmov r1, 1 --answer r1 Should be 1 -cmpaGreaterTestCase :: Spec -cmpaGreaterTestCase = +cmpaTestCaseG :: Spec +cmpaTestCaseG = it "answers 1" $ do let program = construct @@ -348,8 +386,8 @@ cmpaGreaterTestCase = --answer r1 --right 0 --- cmpaLessTestCase :: Spec --- cmpaLessTestCase = +-- cmpaTestCaseL :: Spec +-- cmpaTestCaseL = -- it "answers 0" $ do -- let program = -- construct @@ -372,8 +410,8 @@ cmpaGreaterTestCase = --answer r1 --cmpaneg --- cmpaNegTestCase :: Spec --- cmpaNegTestCase = +-- cmpaNegTestCaseG :: Spec +-- cmpaNegTestCaseG = -- it "answers 0" $ do -- let program = -- construct @@ -387,8 +425,38 @@ cmpaGreaterTestCase = -- answer <- execute program (InputTape []) (InputTape []) -- answer `shouldBe` Right 0 -cmpeEqualTestCase :: Spec -cmpeEqualTestCase = +-- cmpaNegTestCaseL :: Spec +-- cmpaNegTestCaseL = +-- it "answers 0" $ do +-- let program = +-- construct +-- [ Mov (reg' 0) (imm 0), +-- Mov (reg' 2) (imm (negate 2)), +-- Mov (reg' 3) (imm 2), +-- Cmpa (reg' 2) (reg 3), +-- Cmov (reg' 0) (imm 1), +-- Answer (reg 0) +-- ] +-- answer <- execute program (InputTape []) (InputTape []) +-- answer `shouldBe` Right 0 + +-- cmpaNegTestCaseE :: Spec +-- cmpaNegTestCaseE = +-- it "answers 0" $ do +-- let program = +-- construct +-- [ Mov (reg' 0) (imm 0), +-- Mov (reg' 2) (imm (negate 2)), +-- Mov (reg' 3) (imm (negate 2)), +-- Cmpa (reg' 2) (reg 3), +-- Cmov (reg' 0) (imm 1), +-- Answer (reg 0) +-- ] +-- answer <- execute program (InputTape []) (InputTape []) +-- answer `shouldBe` Right 0 + +cmpeTestCaseE :: Spec +cmpeTestCaseE = it "answers 1" $ do let program = construct @@ -402,8 +470,8 @@ cmpeEqualTestCase = answer <- execute program (InputTape []) (InputTape []) answer `shouldBe` Right 1 --- cmpeGreaterTestCase :: Spec --- cmpeGreaterTestCase = +-- cmpeTestCaseG :: Spec +-- cmpeTestCaseG = -- it "answers 0" $ do -- let program = -- construct @@ -417,8 +485,8 @@ cmpeEqualTestCase = -- answer <- execute program (InputTape []) (InputTape []) -- answer `shouldBe` Right 0 --- cmpeLessTestCase :: Spec --- cmpeLessTestCase = +-- cmpeTestCaseL :: Spec +-- cmpeTestCaseL = -- it "answers 0" $ do -- let program = -- construct @@ -432,8 +500,8 @@ cmpeEqualTestCase = -- answer <- execute program (InputTape []) (InputTape []) -- answer `shouldBe` Right 0 --- cmpeNegTestCase :: Spec --- cmpeNegTestCase = +-- cmpeNegTestCaseG :: Spec +-- cmpeNegTestCaseG = -- it "answers 0" $ do -- let program = -- construct @@ -447,8 +515,38 @@ cmpeEqualTestCase = -- answer <- execute program (InputTape []) (InputTape []) -- answer `shouldBe` Right 0 -cmpgeEqualTestCase :: Spec -cmpgeEqualTestCase = +cmpeNegTestCaseE :: Spec +cmpeNegTestCaseE = + it "answers 1" $ do + let program = + construct + [ Mov (reg' 0) (imm 0), + Mov (reg' 2) (imm (negate 1)), + Mov (reg' 3) (imm (negate 1)), + Cmpe (reg' 2) (reg 3), + Cmov (reg' 0) (imm 1), + Answer (reg 0) + ] + answer <- execute program (InputTape []) (InputTape []) + answer `shouldBe` Right 1 + +cmpeNegTestCaseL :: Spec +cmpeNegTestCaseL = + it "answers 0" $ do + let program = + construct + [ Mov (reg' 0) (imm 0), + Mov (reg' 2) (imm (negate 1)), + Mov (reg' 3) (imm 1), + Cmpe (reg' 2) (reg 3), + Cmov (reg' 0) (imm 1), + Answer (reg 0) + ] + answer <- execute program (InputTape []) (InputTape []) + answer `shouldBe` Right 0 + +cmpgeTestCaseE :: Spec +cmpgeTestCaseE = it "answers 1" $ do let program = construct @@ -462,8 +560,8 @@ cmpgeEqualTestCase = answer <- execute program (InputTape []) (InputTape []) answer `shouldBe` Right 1 -cmpgeGreaterTestCase :: Spec -cmpgeGreaterTestCase = +cmpgeTestCaseG :: Spec +cmpgeTestCaseG = it "answers 1" $ do let program = construct @@ -477,8 +575,8 @@ cmpgeGreaterTestCase = answer <- execute program (InputTape []) (InputTape []) answer `shouldBe` Right 1 --- cmpgeLessTestCase :: Spec --- cmpgeLessTestCase = +-- cmpgeTestCaseL :: Spec +-- cmpgeTestCaseL = -- it "answers 0" $ do -- let program = -- construct