isobmff-0.13.0.0: spec/EnumSpec.hs
{-# LANGUAGE UndecidableInstances #-}
module EnumSpec (spec) where
import Data.Proxy
import Data.Type.BitRecords
import Data.Type.Equality ()
import Prelude hiding ((.), id)
import Test.Hspec
spec = do
describe "ToPretty" $ do
it "renders as a record using showRecord" $
showRecord (Proxy @(BitRecordOfEnum (EnumParam "test" TestEnumExt)))
`shouldBe` "test: <<enum>>(2)"
describe "BitStringBuilder" $ do
it "produces binary output" $
bitStringPrinter (Proxy @(BitRecordOfEnum (EnumParam "test" TestEnumExt)))
(MkEnumValue (Proxy @'A))
`shouldBe` "<< 40 >>"
type TestEnumExt = ExtEnum TestEnum 2 'Be FieldU16
data TestEnum =
A | Be | C
type instance FromEnum TestEnum 'A = 1
type instance FromEnum TestEnum 'Be = 2
type instance FromEnum TestEnum 'C = 4