{-# 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