Rewrote tape tests with HUnit
authorMichael Welch <michaelgwelch@gmail.com>
Mon, 20 Feb 2012 02:44:20 +0000 (20:44 -0600)
committerMichael Welch <michaelgwelch@gmail.com>
Mon, 20 Feb 2012 02:44:20 +0000 (20:44 -0600)
haskell/tapetests.hs

index 2b47a31..8e7d70e 100644 (file)
@@ -1,83 +1,89 @@
+module Tape_Test where
+
 import Tape
+import Test.HUnit
 
+{-
 assertEqual :: (Eq a, Show a)  => a -> a -> String -> IO ()
 assertEqual x y s | x == y = return ()
                   | otherwise = error $ "Expected: " ++ (show x) ++ ", Actual: "
                         ++ (show y) ++ " - " ++ s
 
+-}
+
+testIncWithDefaultTape = TestCase $ assertEqual
+    "Should get [1] 0 when we increment default tape" 
+    (createTape [1] 0) (inc tape)
+
+testIncWithPreloadedTape = TestCase $ assertEqual
+    "Should see the current cell incremented"
+    (createTape [2,7,11,15,17] 2)
+    (inc $ createTape [2,7,10,15,17] 2)
+
+incCases = TestList [testIncWithDefaultTape, testIncWithPreloadedTape]
+
+testDecWithDefaultTape = TestCase $ assertEqual
+    "Should get [(-1)] 0 when we increment default tape" 
+    (createTape [(-1)] 0) (dec tape)
+
+testDecWithPreloadedTape = TestCase $ assertEqual
+    "Should see the current cell incremented"
+    (createTape [2,7,11,15,17] 2)
+    (dec $ createTape [2,7,12,15,17] 2)
+
+decCases = TestList [testDecWithDefaultTape, testDecWithPreloadedTape]
+
+
+testMoveFWithDefaultTape = TestCase $ assertEqual
+    "Expect index to move forward from 0 to 1"
+    (createTape [0,0] 1)
+    (moveF tape)
+
+testMoveFWithPreloadedTape = TestCase $ assertEqual
+    "Expect index to mvoe forward from 2 to 3"
+    (createTape [1,7,9,11] 3)
+    (moveF $ createTape [1,7,9,11] 2)
+
+moveFCases = TestList [testMoveFWithDefaultTape, testMoveFWithPreloadedTape]
+
+testMoveRWithDefaultTape = TestCase $ assertEqual
+    "Expect index to stay at 0 as a new element added at front."
+    (createTape [0,0] 0)
+    (moveR tape)
+
+testMoveRWithPreloadedTape = TestCase $ assertEqual
+    "Expect index to move forward from 3 to 2."
+    (createTape [1,7,9,11] 2)
+    (moveR $ createTape [1,7,9,11] 3)
+
+moveRCases = TestList [testMoveRWithDefaultTape, testMoveRWithPreloadedTape]
+
+testGetCurrentWithDefaultTape = TestCase $ assertEqual
+    "Expect to return 0 from get from default tape"
+    0 (get tape)
+
+testGetCurrentWithPreloadedTape = TestCase $ assertEqual
+    "Expect to return 5 from get [3,4,5,9] 2"
+    5 (get $ createTape [3,4,5,9] 2)
+
+getCases = TestList[testGetCurrentWithDefaultTape, testGetCurrentWithPreloadedTape]
+
+
+testSetCurrentWithDefaultTape = TestCase $ assertEqual
+    "Set current value to 100"
+    (createTape [100] 0)
+    (set tape 100)
+
+testSetCurrentWithPreloadedTape = TestCase $ assertEqual
+    "Set current value to 200"
+    (createTape [7,9,200,3] 2)
+    (set (createTape [7,9,0,3] 2) 200)
+
+setCases = TestList [testSetCurrentWithDefaultTape, testSetCurrentWithPreloadedTape]
+
+allCases = TestList [incCases, decCases, moveFCases, moveRCases, getCases,
+                     setCases]
+
+main = runTestTT allCases
 
-tape_moveForward_InDefault :: IO ()
-tape_moveForward_InDefault = let expected = Tape (Iterate [0,0] 1)
-                                 actual = moveF tape
-                             in assertEqual expected actual "MF1"
-
-tape_moveForward_InMiddle :: IO ()
-tape_moveForward_InMiddle = assertEqual expected actual "MF2"
-        where expected = Tape (Iterate [1,3,5,7] 3)
-              begin = Tape (Iterate [1,3,5,7] 2)
-              actual = moveF begin 
-
-tape_moveForward_AtEnd :: IO()
-tape_moveForward_AtEnd = assertEqual expected actual "MF3"
-        where expected = Tape (Iterate [2,4,6,8,10,0] 5)
-              begin = Tape (Iterate [2,4,6,8,10] 4)
-              actual = moveF begin
-                            
-
-tape_moveBackward_InDefault :: IO ()
-tape_moveBackward_InDefault = let expected = Tape (Iterate [0,0] 0)
-                                  actual = moveR tape
-                             in assertEqual expected actual "MR1"
-
-tape_moveBackward_InMiddle :: IO ()
-tape_moveBackward_InMiddle = assertEqual expected actual "MR2"
-        where expected = Tape (Iterate [1,3,5,7] 2)
-              begin = Tape (Iterate [1,3,5,7] 3)
-              actual = moveR begin 
-
-tape_moveBackward_AtEnd :: IO()
-tape_moveBackward_AtEnd = assertEqual expected actual "MR3"
-        where expected = Tape (Iterate [2,4,6,8,10] 3)
-              begin = Tape (Iterate [2,4,6,8,10] 4)
-              actual = moveR begin
-
-tape_setCurrent :: IO()
-tape_setCurrent = assertEqual expected actual "SC1"
-        where begin = createTape [7, 9, 11, 13, 14] 2
-              actual = set begin 8
-              expected = createTape [7, 9, 8, 13, 14] 2
-
-tape_getCurrent :: IO ()
-tape_getCurrent = assertEqual expected actual "GC1"
-        where begin = createTape [99, 87, 65, 43] 3
-              actual = get begin
-              expected = 43
-
-
-tape_inc :: IO()
-tape_inc = assertEqual expected actual "Inc"
-        where begin = createTape [1,3,5,7] 2
-              actual = inc begin
-              expected = createTape [1,3,6,7] 2
-         
-tape_dec :: IO()
-tape_dec = assertEqual expected actual "Dec"
-        where begin = createTape [1,3,5,7] 2
-              actual = dec begin
-              expected = createTape [1,3,4,7] 2
-         
-
-main :: IO ()
-main = do
-    tape_moveForward_InDefault
-    tape_moveForward_InMiddle
-    tape_moveForward_AtEnd
-    tape_moveBackward_AtEnd
-    tape_moveBackward_InDefault
-    tape_moveBackward_AtEnd
-    tape_setCurrent
-    tape_getCurrent
-    tape_inc
-    tape_dec
-    return ()