{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE CPP #-}

module Data.GenValidity.Set where
#if !MIN_VERSION_base(4,8,0)
import Data.Functor ((<$>))
#endif
import Data.GenValidity
import Data.Validity.Set ()

import Data.Set (Set)
import qualified Data.Set as S

instance (Ord v, GenUnchecked v) => GenUnchecked (Set v) where
    genUnchecked = S.fromList <$> genUnchecked
    shrinkUnchecked = fmap S.fromList . shrinkUnchecked . S.toList

instance (Ord v, GenValid v) => GenValid (Set v) where
    genValid = S.fromList <$> genValid

instance (Ord v, GenInvalid v) => GenInvalid (Set v) where
    genInvalid = S.fromList <$> genInvalid