Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
230 changes: 164 additions & 66 deletions test/TinyRAM/Spec/EndToEndSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -216,8 +224,8 @@ cjmpTestCase =
--cmov r1, 1
--answer r1

cmpaeEqualTestCase :: Spec
cmpaeEqualTestCase =
cmpaeTestCaseE :: Spec
cmpaeTestCaseE =
it "answers 1" $ do
let program =
construct
Expand All @@ -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),
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -301,8 +339,8 @@ cmpaeGreaterTestCase =
--cmov r1, 1
--answer r1

cmpaEqualTestCase :: Spec
cmpaEqualTestCase =
cmpaTestCaseE :: Spec
cmpaTestCaseE =
it "answers 1" $ do
let program =
construct
Expand All @@ -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
Expand All @@ -348,8 +386,8 @@ cmpaGreaterTestCase =
--answer r1
--right 0

-- cmpaLessTestCase :: Spec
-- cmpaLessTestCase =
-- cmpaTestCaseL :: Spec
-- cmpaTestCaseL =
-- it "answers 0" $ do
-- let program =
-- construct
Expand All @@ -372,8 +410,8 @@ cmpaGreaterTestCase =
--answer r1
--cmpaneg

-- cmpaNegTestCase :: Spec
-- cmpaNegTestCase =
-- cmpaNegTestCaseG :: Spec
-- cmpaNegTestCaseG =
-- it "answers 0" $ do
-- let program =
-- construct
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down