hasklepias-0.8.3: src/EventData/Context/Arbitrary.hs
{-|
Module : Generate arbitrary contexts
Description : Functions for generating arbitrary context
Copyright : (c) NoviSci, Inc 2020
License : BSD3
Maintainer : bsaul@novisci.com
-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE Safe #-}
module EventData.Context.Arbitrary() where
import Test.QuickCheck ( Arbitrary(arbitrary), elements, sublistOf )
import Data.Function ( (.) )
import Data.Functor ( Functor(fmap) )
import Data.List ( map )
import Data.Maybe ( Maybe(Nothing) )
import Data.Set ( fromList )
import EventData.Context ( Concept
, Concepts
, Context
, context
, toConcepts
, packConcepts
, packConcept)
conceptChoices :: [Concept]
conceptChoices = map packConcept ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]
instance Arbitrary Concept where
arbitrary = elements conceptChoices
instance Arbitrary Context where
arbitrary = fmap (\x -> context Nothing ((toConcepts . fromList) x)) (sublistOf conceptChoices)
-- instance Arbitrary Concepts where
-- arbitrary = fmap fromList (sublistOf conceptChoices)