aboutsummaryrefslogtreecommitdiff
path: root/Haskell-book/28/DifferenceList/test/Spec.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2025-12-11 10:28:11 +0100
committerEugen Wissner <belka@caraus.de>2025-12-11 10:28:11 +0100
commit98329e0a3dd4f78b5d815ac3896272ec70904901 (patch)
tree80f9c56cfe2ac20232358f236d32e84bd683be1b /Haskell-book/28/DifferenceList/test/Spec.hs
parent3624c712d72d246f21d4e710cec7c11e052e0326 (diff)
downloadbook-exercises-98329e0a3dd4f78b5d815ac3896272ec70904901.tar.gz
Add remaining haskell book exercises
Diffstat (limited to 'Haskell-book/28/DifferenceList/test/Spec.hs')
-rw-r--r--Haskell-book/28/DifferenceList/test/Spec.hs33
1 files changed, 33 insertions, 0 deletions
diff --git a/Haskell-book/28/DifferenceList/test/Spec.hs b/Haskell-book/28/DifferenceList/test/Spec.hs
new file mode 100644
index 0000000..84d9376
--- /dev/null
+++ b/Haskell-book/28/DifferenceList/test/Spec.hs
@@ -0,0 +1,33 @@
+module Main where
+
+import Test.Hspec
+import Data.Queue
+
+main :: IO ()
+main = hspec $ do
+ describe "empty" $ do
+ it "returns an empty queue" $ do
+ (empty :: Queue Int) `shouldBe` (Queue [] [])
+
+ describe "push" $ do
+ it "puts an element into an empty queue" $ do
+ (push 5 empty) `shouldBe` (Queue [5] [])
+
+ describe "pop" $ do
+ it "takes the only element from the queue" $ do
+ (pop (Queue [5] [])) `shouldBe` (Just (5, Queue [] []))
+ it "returns nothing if the queue is empty" $ do
+ (pop ((Queue [] [])::Queue Int)) `shouldBe` Nothing
+ it "takes elements in the FIFO order" $ do
+ let queue = push 3 (push 5 empty)
+ in pop queue `shouldBe` Just (5, Queue [] [3])
+
+ describe "isEmpty" $ do
+ it "tells when the queue is empty" $ do
+ (isEmpty (empty :: Queue Int)) `shouldBe` True
+ it "tells when the enqueue part isn't empty" $ do
+ let queue = push 3 empty
+ in isEmpty queue `shouldBe` False
+ it "tells when the dequeue part isn't empty" $ do
+ let queue = fmap snd (pop $ push 3 (push 5 empty))
+ in fmap isEmpty queue `shouldBe` Just False