single-tuple-0.1.0.0: test/Data/Tuple/SingleSpec.hs
module Data.Tuple.SingleSpec (spec) where
import Data.Tuple.Single
import Test.Hspec
import Data.Functor.Identity
import Data.Tuple.OneTuple
import Data.Tuple.Only
spec :: Spec
spec = do
describe "Identity" $ do
it "unwrap . wrap" $ do
unwrap (wrap () :: Identity ()) `shouldBe` ()
it "wrap . unwrap" $ do
let a = Identity ()
wrap (unwrap a) `shouldBe` a
it "pattern destruct construct" $ do
let Single a = Single () :: Identity ()
a `shouldBe` ()
describe "Only" $ do
it "unwrap . wrap" $ do
unwrap (wrap () :: Only ()) `shouldBe` ()
it "wrap . unwrap" $ do
let a = Only ()
wrap (unwrap a) `shouldBe` a
it "pattern destruct construct" $ do
let Single a = Single () :: Only ()
a `shouldBe` ()
describe "OneTuple" $ do
it "unwrap . wrap" $ do
unwrap (wrap () :: OneTuple ()) `shouldBe` ()
it "wrap . unwrap" $ do
let a = OneTuple ()
wrap (unwrap a) `shouldBe` a
it "pattern destruct construct" $ do
let Single a = Single () :: OneTuple ()
a `shouldBe` ()