oops-0.1.0.0: test/Data/VariantSpec.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
module Data.VariantSpec (spec) where
import HaskellWorks.Hspec.Hedgehog (require)
import Hedgehog ((===), forAll, property)
import Test.Hspec (describe, it, Spec)
import qualified Data.Variant as DV
import qualified Hedgehog.Gen.QuickCheck as G
{- HLINT ignore "Redundant do" -}
spec :: Spec
spec = describe "Data.VariantSpec" $ do
it "VariantF" $ require $ property $ do
x <-forAll $ G.arbitrary @(DV.VariantF Maybe '[Int, String])
DV.fromEithersF (DV.toEithersF x) === x
it "Variant" $ require $ property $ do
x <-forAll $ G.arbitrary @(DV.Variant '[Int, String, Bool])
DV.fromEithersF (DV.toEithersF x) === x