From 85ac51660b298681ba3dcaee9def5f1e5f2c5284 Mon Sep 17 00:00:00 2001 From: manuel Date: Tue, 22 May 2012 00:21:05 +0200 Subject: adding test and some minor fixes --- AufgabeFFP7.hs | 8 +++---- TestAufgabeFFP7.hs | 66 +++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 64 insertions(+), 10 deletions(-) diff --git a/AufgabeFFP7.hs b/AufgabeFFP7.hs index c9454a5..091cb49 100644 --- a/AufgabeFFP7.hs +++ b/AufgabeFFP7.hs @@ -13,7 +13,7 @@ empty = (0, "") -- insert character before cursor insert :: Char -> Buffer -> Buffer -insert c (cur, buf) = (cur, buf1 ++ [c] ++ buf2) +insert c (cur, buf) = (min (length buf + 1) (max (cur - 1) 0), buf1 ++ [c] ++ buf2) where (buf1, buf2) = splitAt cur buf @@ -21,7 +21,7 @@ insert c (cur, buf) = (cur, buf1 ++ [c] ++ buf2) delete :: Buffer -> Buffer delete (cur, buf) | buf2 == [] = (min cur (length buf1), buf1) - | cur < 0 = (cur, buf) + | cur < 0 = (0, buf) | otherwise = (cur, buf1 ++ tail buf2) where (buf1, buf2) = splitAt cur buf @@ -36,11 +36,11 @@ right (cur, buf) = (max 0 (min (cur + 1) (length buf)), buf) -- is cursor at left end? atLeft :: Buffer -> Bool -atLeft (cur, buf) = cur == 0 +atLeft (cur, buf) = cur <= 0 -- is cursor at right end? atRight :: Buffer -> Bool -atRight (cur, buf) = cur == length buf +atRight (cur, buf) = cur >= length buf -------------------------------------------------------------------------------- diff --git a/TestAufgabeFFP7.hs b/TestAufgabeFFP7.hs index f83952b..16952cb 100755 --- a/TestAufgabeFFP7.hs +++ b/TestAufgabeFFP7.hs @@ -9,12 +9,66 @@ import AufgabeFFP7 import Test.QuickCheck import System.IO.Unsafe -{-- -cases1 = TestLabel "TODO" $ TestList [ - TestCase $ assertEqual "TODO" (result) (call) - ... +cases1 = TestLabel "buffer" $ TestList [ + TestCase $ assertEqual "empty" (0, "") + (empty), + + TestCase $ assertEqual "insert1" (0, "a") + (insert 'a' empty), + TestCase $ assertEqual "insert2" (0, "ba") + (insert 'b' (insert 'a' empty)), + TestCase $ assertEqual "insert3" (0, "ba") + (insert 'b' (insert 'a' empty)), + TestCase $ assertEqual "insert4" (0, "ba") + (insert 'b' (-100, "a")), + TestCase $ assertEqual "insert5" (2, "ab") + (insert 'b' (100, "a")), + + TestCase $ assertEqual "delete1" (0, "bc") + (delete (0, "abc")), + TestCase $ assertEqual "delete2" (2, "ab") + (delete (2, "abc")), + TestCase $ assertEqual "delete3" (0, "abc") + (delete (-100, "abc")), + TestCase $ assertEqual "delete4" (3, "abc") + (delete (100, "abc")), + + TestCase $ assertEqual "left1" (0, "abc") + (left (0, "abc")), + TestCase $ assertEqual "left2" (0, "abc") + (left (-100, "abc")), + TestCase $ assertEqual "left3" (1, "abc") + (left (2, "abc")), + TestCase $ assertEqual "left4" (3, "abc") + (left (4, "abc")), + TestCase $ assertEqual "left5" (3, "abc") + (left (100, "abc")), + + TestCase $ assertEqual "right1" (1, "abc") + (right (0, "abc")), + TestCase $ assertEqual "right2" (0, "abc") + (right (-100, "abc")), + TestCase $ assertEqual "right3" (2, "abc") + (right (1, "abc")), + TestCase $ assertEqual "right4" (3, "abc") + (right (3, "abc")), + TestCase $ assertEqual "right5" (3, "abc") + (right (100, "abc")), + + TestCase $ assertEqual "atLeft1" (True) + (atLeft (0, "abc")), + TestCase $ assertEqual "atLeft2" (False) + (atLeft (1, "abc")), + TestCase $ assertEqual "atLeft3" (True) + (atLeft (-100, "abc")), + + TestCase $ assertEqual "atRight1" (True) + (atRight (3, "abc")), + TestCase $ assertEqual "atRight2" (False) + (atRight (1, "abc")), + TestCase $ assertEqual "atRight3" (True) + (atRight (100, "abc")) ] ---} -------------------------------------------------------------------------------- @@ -35,7 +89,7 @@ cases2 = TestLabel "ssfn/minfree" $ TestList [ -------------------------------------------------------------------------------- tests :: [Test] -tests = [cases2] +tests = [cases1, cases2] isSuccess :: Counts -> Bool isSuccess Counts{ cases = _, tried = _, errors = 0, failures = 0 } = True -- cgit v1.2.3