text-builder-dev-0.3.2: test/TextBuilderDev/TastyExtras.hs
module TextBuilderDev.TastyExtras where
import qualified Data.Text as Text
import qualified Data.Text.Lazy.Builder as TextLazyBuilder
import Test.QuickCheck.Instances
import Test.Tasty
import Test.Tasty.HUnit
import Test.Tasty.QuickCheck
import qualified TextBuilderDev as B
import Prelude hiding (choose)
-- * --
instance Arbitrary TextLazyBuilder.Builder where
arbitrary =
TextLazyBuilder.fromLazyText <$> arbitrary
instance Arbitrary B.TextBuilder where
arbitrary =
B.lazyText <$> arbitrary
-- * --
isomorphismLaws ::
(B.IsomorphicToTextBuilder a, Eq a, Show a, Arbitrary a) =>
String ->
Proxy a ->
TestTree
isomorphismLaws subject proxy =
testGroup subject $
[ testProperty "fromTextBuilder . toTextBuilder == id" $
(===)
<$> B.fromTextBuilder . B.toTextBuilder
<*> flip asProxyTypeOf proxy,
testProperty "toTextBuilder . fromTextBuilder == id" $
(===)
<$> B.toTextBuilder . flip asProxyTypeOf proxy . B.fromTextBuilder
<*> id
]