bitmasks-0: test/Data/Pizza.hs
{-# LANGUAGE DerivingVia #-}
module Data.Pizza where
import Data.Bitmask
import Test.QuickCheck
-- Pizza toppings enumeration
data PizzaTopping =
Cheese
| Mushrooms
| Pineapple
| Ham
deriving (Show, Eq, Ord, Bounded, Enum)
instance Arbitrary PizzaTopping where
arbitrary = chooseEnum (minBound :: PizzaTopping, maxBound :: PizzaTopping)
type PizzaMask = Bitmask8 PizzaTopping
-- Pizza examples
margherita :: PizzaMask
margherita = fromFlags [Cheese]
veggie :: PizzaMask
veggie = fromExceptFlags [Ham]
hawaiian :: PizzaMask
hawaiian = addFlags [Pineapple, Ham] margherita