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

module Data.GenValidity.DNonEmpty () where

import Data.DList.DNonEmpty (DNonEmpty)
import qualified Data.DList.DNonEmpty as DNonEmpty
import Data.GenValidity (GenValid (..))
import Data.Validity.DNonEmpty ()

instance (GenValid a) => GenValid (DNonEmpty a) where
  genValid :: Gen (DNonEmpty a)
genValid = NonEmpty a -> DNonEmpty a
forall a. NonEmpty a -> DNonEmpty a
DNonEmpty.fromNonEmpty (NonEmpty a -> DNonEmpty a)
-> Gen (NonEmpty a) -> Gen (DNonEmpty a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (NonEmpty a)
forall a. GenValid a => Gen a
genValid
  shrinkValid :: DNonEmpty a -> [DNonEmpty a]
shrinkValid = (NonEmpty a -> DNonEmpty a) -> [NonEmpty a] -> [DNonEmpty a]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap NonEmpty a -> DNonEmpty a
forall a. NonEmpty a -> DNonEmpty a
DNonEmpty.fromNonEmpty ([NonEmpty a] -> [DNonEmpty a])
-> (DNonEmpty a -> [NonEmpty a]) -> DNonEmpty a -> [DNonEmpty a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmpty a -> [NonEmpty a]
forall a. GenValid a => a -> [a]
shrinkValid (NonEmpty a -> [NonEmpty a])
-> (DNonEmpty a -> NonEmpty a) -> DNonEmpty a -> [NonEmpty a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DNonEmpty a -> NonEmpty a
forall a. DNonEmpty a -> NonEmpty a
DNonEmpty.toNonEmpty