summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AufgabeFFP7.hs17
-rwxr-xr-xTestAufgabeFFP7.hs4
2 files changed, 11 insertions, 10 deletions
diff --git a/AufgabeFFP7.hs b/AufgabeFFP7.hs
index 099eda8..e2a7d65 100644
--- a/AufgabeFFP7.hs
+++ b/AufgabeFFP7.hs
@@ -20,11 +20,12 @@ insert c (cur, buf) = (min (length buf + 1) (max (cur + 1) 1), buf1 ++ [c] ++ bu
20-- delete character before cursor 20-- delete character before cursor
21delete :: Buffer -> Buffer 21delete :: Buffer -> Buffer
22delete (cur, buf) 22delete (cur, buf)
23 | buf2 == "" = (min cur (length buf1), buf1) 23 | buf2 == "" = (min newCur (length buf1), buf1)
24 | cur < 0 = (0, buf) 24 | newCur < 0 = (0, buf)
25 | otherwise = (cur, buf1 ++ tail buf2) 25 | otherwise = (newCur, buf1 ++ tail buf2)
26 where 26 where
27 (buf1, buf2) = splitAt cur buf 27 newCur = cur - 1
28 (buf1, buf2) = splitAt newCur buf
28 29
29-- move cursor left one character 30-- move cursor left one character
30left :: Buffer -> Buffer 31left :: Buffer -> Buffer
@@ -52,22 +53,22 @@ emptyI = ("", "")
52 53
53-- insert character before cursor 54-- insert character before cursor
54insertI :: Char -> BufferI -> BufferI 55insertI :: Char -> BufferI -> BufferI
55insertI c (beforeC, afterC) = ([c] ++ beforeC, afterC) 56insertI c (beforeC, afterC) = (c:beforeC, afterC)
56 57
57-- delete character before cursor 58-- delete character before cursor
58deleteI :: BufferI -> BufferI 59deleteI :: BufferI -> BufferI
59deleteI (beforeC, "") = (beforeC, "") 60deleteI (beforeC, "") = (beforeC, "")
60deleteI (beforeC, c:afterC) = (beforeC, afterC) 61deleteI (c:beforeC, afterC) = (beforeC, afterC)
61 62
62-- move cursor left one character 63-- move cursor left one character
63leftI :: BufferI -> BufferI 64leftI :: BufferI -> BufferI
64leftI ("", afterC) = ("", afterC) 65leftI ("", afterC) = ("", afterC)
65leftI (c:beforeC, afterC) = (beforeC, [c] ++ afterC) 66leftI (c:beforeC, afterC) = (beforeC, c:afterC)
66 67
67-- move cursor right one character 68-- move cursor right one character
68rightI :: BufferI -> BufferI 69rightI :: BufferI -> BufferI
69rightI (beforeC, "") = (beforeC, "") 70rightI (beforeC, "") = (beforeC, "")
70rightI (beforeC, c:afterC) = ([c] ++ beforeC, afterC) 71rightI (beforeC, c:afterC) = (c:beforeC, afterC)
71 72
72-- is cursor at left end? 73-- is cursor at left end?
73atLeftI :: BufferI -> Bool 74atLeftI :: BufferI -> Bool
diff --git a/TestAufgabeFFP7.hs b/TestAufgabeFFP7.hs
index bbe3540..376e782 100755
--- a/TestAufgabeFFP7.hs
+++ b/TestAufgabeFFP7.hs
@@ -23,8 +23,8 @@ cases1 = TestLabel "buffer" $ TestList [
23 (insert 'b' (100, "a")), 23 (insert 'b' (100, "a")),
24 24
25 TestCase $ assertEqual "delete1" (0, "bc") 25 TestCase $ assertEqual "delete1" (0, "bc")
26 (delete (0, "abc")), 26 (delete (0, "bc")),
27 TestCase $ assertEqual "delete2" (2, "ab") 27 TestCase $ assertEqual "delete2" (1, "ac")
28 (delete (2, "abc")), 28 (delete (2, "abc")),
29 TestCase $ assertEqual "delete3" (0, "abc") 29 TestCase $ assertEqual "delete3" (0, "abc")
30 (delete (-100, "abc")), 30 (delete (-100, "abc")),