summaryrefslogtreecommitdiff
path: root/Haskell-book/15/optional/test/Spec.hs
blob: 189d1431472a91ee51e9e19675c2f4a8b1300973 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import Data.Monoid
import Optional
import Test.Hspec

main :: IO ()
main = hspec $ do
    describe "Sum" $ do
        it "1 + 1 is 2" $ do
            Only (Sum 1) `mappend` Only (Sum 1) `shouldBe` Only (Sum {getSum = 2})
    describe "Product" $ do
        it "4 * 2 is 8" $ do
            Only (Product 4) `mappend` Only (Product 2) `shouldBe` Only (Product {getProduct = 8})
    describe "Sum with Nada" $ do
        it "1 + Nada is 1" $ do
            Only (Sum 1) `mappend` Nada `shouldBe` Only (Sum {getSum = 1})
    describe "List" $ do
        it "[1] <> Nada is [1]" $ do
            Only [1] `mappend` Nada `shouldBe` Only [1]
    describe "Nada with sum" $ do
        it "Nada + 1 is 1" $ do
            Nada `mappend` Only (Sum 1) `shouldBe` Only (Sum {getSum = 1})