-- |
-- Copyright: © 2025 Jonathan Knowles
-- License: Apache-2.0
module Data.MonoidMap.QuickCheck.Instances.CoArbitrary ()
where

import Data.Function
    ( (.)
    )
import Data.MonoidMap
    ( MonoidMap
    )
import Test.QuickCheck
    ( CoArbitrary (coarbitrary)
    )

import qualified Data.MonoidMap as MonoidMap

instance
    ( CoArbitrary k
    , CoArbitrary v
    )
    => CoArbitrary (MonoidMap k v)
  where
    coarbitrary :: forall b. MonoidMap k v -> Gen b -> Gen b
coarbitrary = Map k v -> Gen b -> Gen b
forall a b. CoArbitrary a => a -> Gen b -> Gen b
forall b. Map k v -> Gen b -> Gen b
coarbitrary (Map k v -> Gen b -> Gen b)
-> (MonoidMap k v -> Map k v) -> MonoidMap k v -> Gen b -> Gen b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MonoidMap k v -> Map k v
forall k v. MonoidMap k v -> Map k v
MonoidMap.toMap