packages feed

text-show-instances-3.5: tests/Spec/Data/Functor/TransSpec.hs

{-|
Module:      Spec.Data.Functor.TransSpec
Copyright:   (C) 2014-2017 Ryan Scott
License:     BSD-style (see the file LICENSE)
Maintainer:  Ryan Scott
Stability:   Provisional
Portability: GHC

@hspec@ tests for functor transformers.
-}
module Spec.Data.Functor.TransSpec (main, spec) where

import Data.Functor.Compose  (Compose)
import Data.Functor.Constant (Constant)
import Data.Functor.Product  (Product)
import Data.Functor.Reverse  (Reverse)
import Data.Functor.Sum      (Sum)
import Data.Proxy            (Proxy(..))

import Instances.Data.Functor.Trans ()

import Spec.Utils (matchesTextShowSpec)

import Test.Hspec (Spec, describe, hspec, parallel)

import TextShow.Data.Functor.Trans ()

main :: IO ()
main = hspec spec

spec :: Spec
spec = parallel $ do
    describe "Compose Maybe (Either Int) Char" $
        matchesTextShowSpec (Proxy :: Proxy (Compose Maybe (Either Int) Char))
    describe "Constant Int Char" $
        matchesTextShowSpec (Proxy :: Proxy (Constant Int Char))
    describe "Product Maybe (Either Int) Char" $
        matchesTextShowSpec (Proxy :: Proxy (Product Maybe (Either Int) Char))
    describe "Reverse Maybe Int" $
        matchesTextShowSpec (Proxy :: Proxy (Reverse Maybe Int))
    describe "Sum Maybe (Either Int) Char" $
        matchesTextShowSpec (Proxy :: Proxy (Sum Maybe (Either Int) Char))