headroom-0.2.0.0: test/Headroom/Types/EnumExtraSpec.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module Headroom.Types.EnumExtraSpec
( spec
)
where
import Headroom.Types.EnumExtra
import RIO
import Test.Hspec
data TestEnum
= Foo
| Bar
deriving (Bounded, Enum, EnumExtra, Eq, Ord, Show)
spec :: Spec
spec = do
describe "allValues" $ do
it "should return list of all enum values" $ do
allValues @TestEnum `shouldBe` [Foo, Bar]
describe "allValuesToText" $ do
it "should pretty print all enum values" $ do
allValuesToText @TestEnum `shouldBe` "Foo, Bar"
describe "enumToText" $ do
it "should show textual representation of enum value" $ do
enumToText Foo `shouldBe` "Foo"
describe "textToEnum" $ do
it "should read enum value from textual representation" $ do
textToEnum "foo" `shouldBe` Just Foo