packages feed

genvalidity-criterion-1.1.0.0: bench/Main.hs

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

module Main where

import Criterion.Main as Criterion
import Data.Fixed
import Data.GenValidity.Criterion
import Data.Int
import Data.List.NonEmpty (NonEmpty (..))
import Data.Ratio
import Data.Word
import Numeric.Natural

main :: IO ()
main =
  Criterion.defaultMain
    [ bgroup
        "generators"
        [ genValidBench @(),
          genValidBench @Bool,
          genValidBench @Ordering,
          genValidBench @Char,
          genValidBench @Int,
          genValidBench @(Int, Int),
          genValidBench @(Int, Int, Int),
          genValidBench @(Int, Int, Int, Int),
          genValidBench @(Maybe Int),
          genValidBench @(Either Int Int),
          genValidBench @[Int],
          genValidBench @[[Int]],
          genValidBench @(NonEmpty Int),
          genValidBench @(NonEmpty (NonEmpty Int)),
          genValidBench @(Ratio Int),
          genValidBench @Rational,
          genValidBench @Int8,
          genValidBench @Int16,
          genValidBench @Int32,
          genValidBench @Int64,
          genValidBench @Integer,
          genValidBench @Word8,
          genValidBench @Word16,
          genValidBench @Word32,
          genValidBench @Word64,
          genValidBench @Natural,
          genValidBench @Float,
          genValidBench @Double,
          genValidBench @(Fixed E12),
          genValidBench @String
        ],
      bgroup
        "shrinkers"
        [ shrinkValidBench @(),
          shrinkValidBench @Bool,
          shrinkValidBench @Ordering,
          shrinkValidBench @Char,
          shrinkValidBench @Int,
          shrinkValidBench @(Int, Int),
          shrinkValidBench @(Int, Int, Int),
          shrinkValidBench @(Int, Int, Int, Int),
          shrinkValidBench @(Maybe Int),
          shrinkValidBench @(Either Int Int),
          shrinkValidBench @[Int],
          shrinkValidBench @[[Int]],
          shrinkValidBench @(NonEmpty Int),
          shrinkValidBench @(NonEmpty (NonEmpty Int)),
          shrinkValidBench @(Ratio Int),
          shrinkValidBench @Rational,
          shrinkValidBench @Int8,
          shrinkValidBench @Int16,
          shrinkValidBench @Int32,
          shrinkValidBench @Int64,
          shrinkValidBench @Integer,
          shrinkValidBench @Word8,
          shrinkValidBench @Word16,
          shrinkValidBench @Word32,
          shrinkValidBench @Word64,
          shrinkValidBench @Natural,
          shrinkValidBench @Float,
          shrinkValidBench @Double,
          shrinkValidBench @(Fixed E12),
          shrinkValidBench @String
        ]
    ]