{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Scavenge.Test where
import Data.Semigroup.Cancellative
import Data.List
import Test.QuickCheck
import QuickSpec
import Data.MultiSet (MultiSet, fromList, toList)
type TestReward = MultiSet Int
instance Commutative TestReward
instance Arbitrary TestReward where
arbitrary = fromList <$> arbitrary
shrink = fmap fromList . sortOn length . genericShrink . toList
instance Observe () TestReward TestReward where
type TestClue = Int