packages feed

genvalidity-text-0.7.0.1: bench/Main.hs

{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ScopedTypeVariables #-}

module Main where

import Data.Text as Strict
import Data.Text.Lazy as Lazy

import Criterion.Main as Criterion

import Data.GenValidity
import Test.QuickCheck

import Data.GenValidity.Criterion
import Data.GenValidity.Text

main :: IO ()
main =
  Criterion.defaultMain
    [ bgroup
        "Instances"
        [genBench "Strict.Text" (genValid @Strict.Text), genBench "Lazy.Text" (genValid @Lazy.Text)]
    , bgroup
        "Approaches"
        [ genBench "via list (old version)" $ Strict.pack <$> genValid
        , genBench "genText" genText
        , genBench "genTextBy genValid" $ genTextBy genValid
        , genBench "genTextBy (choose (minBound, maxBound)) (currently in use)" $
          genTextBy (choose (minBound, maxBound))
        ]
    ]