packages feed

hspec-tidy-formatter-0.1.0.0: readme-example/Data/MyLogic/TestUtils/GeneratorSpec.hs

{-# LANGUAGE OverloadedStrings #-}

module Data.MyLogic.TestUtils.GeneratorSpec
( spec
) where

import Helpers
import Test.Hspec
import Test.Hspec.Hedgehog
import Hedgehog.Gen   qualified as Gen
import Hedgehog.Range qualified as Range

spec :: Spec
spec = do
  it "Hedgehog generator" $ hedgehog $ do
    x <- forAll (Gen.int $ Range.constant 0 100)
    distributions x
    delayIO

distributions :: MonadTest m => Int -> m ()
distributions x = do
  classify "  n:   0     " (x== 0         )
  classify "  n:   1- 4  " (x>= 1 && x<= 4)
  classify "  n:   5-19  " (x>= 5 && x<=19)
  classify "  n:  20-79  " (x>=20 && x<=79)
  classify "  n:  80-    " (x>=80         )