{-# LANGUAGE CPP              #-}
{-# LANGUAGE FlexibleContexts #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Test.QuickCheck.Instances.Text.Short () where

import Prelude ()
import Test.QuickCheck.Instances.CustomPrelude

import Test.QuickCheck

import qualified Data.Text.Short as T

-------------------------------------------------------------------------------
-- text
-------------------------------------------------------------------------------

instance Arbitrary T.ShortText where
    arbitrary :: Gen ShortText
arbitrary = [Char] -> ShortText
T.pack ([Char] -> ShortText) -> Gen [Char] -> Gen ShortText
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen [Char]
forall a. Arbitrary a => Gen a
arbitrary
    shrink :: ShortText -> [ShortText]
shrink ShortText
xs = [Char] -> ShortText
T.pack ([Char] -> ShortText) -> [[Char]] -> [ShortText]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [[Char]]
forall a. Arbitrary a => a -> [a]
shrink (ShortText -> [Char]
T.unpack ShortText
xs)

instance CoArbitrary T.ShortText where
    coarbitrary :: ShortText -> Gen b -> Gen b
coarbitrary = [Char] -> Gen b -> Gen b
forall a b. CoArbitrary a => a -> Gen b -> Gen b
coarbitrary ([Char] -> Gen b -> Gen b)
-> (ShortText -> [Char]) -> ShortText -> Gen b -> Gen b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShortText -> [Char]
T.unpack

instance Function T.ShortText where
    function :: (ShortText -> b) -> ShortText :-> b
function = (ShortText -> [Char])
-> ([Char] -> ShortText) -> (ShortText -> b) -> ShortText :-> b
forall b a c.
Function b =>
(a -> b) -> (b -> a) -> (a -> c) -> a :-> c
functionMap ShortText -> [Char]
T.unpack [Char] -> ShortText
T.pack