random-1.2.1: test-inspection/Spec/Inspection.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# OPTIONS_GHC -Wno-missing-signatures -O -dsuppress-all -dno-suppress-type-signatures -fplugin=Test.Tasty.Inspection.Plugin #-}
module Spec.Inspection (inspectionTests) where
import Data.Int
import Data.Void
import Data.Word
import GHC.Generics
import System.Random
import System.Random.Stateful
import Test.Tasty
import Test.Tasty.Inspection
uniform' :: Uniform a => (a, StdGen)
uniform' = uniform (mkStdGen 42)
uniform_Word8 = uniform' @Word8
uniform_Int8 = uniform' @Int8
uniform_Char = uniform' @Char
data MyAction = Code (Maybe Bool) | Never Void | Eat (Bool, Bool) | Sleep ()
deriving (Eq, Ord, Show, Generic, Finite)
instance Uniform MyAction
uniform_MyAction = uniform' @MyAction
uniformR' :: (Bounded a, UniformRange a) => (a, StdGen)
uniformR' = uniformR (minBound, maxBound) (mkStdGen 42)
uniformR_Word8 = uniformR' @Word8
uniformR_Int8 = uniformR' @Int8
uniformR_Char = uniformR' @Char
uniformR_Double = uniformR (0 :: Double, 1) (mkStdGen 42)
inspectionTests :: TestTree
inspectionTests = testGroup "Inspection" $
[ $(inspectObligations [(`doesNotUse` 'StateGenM), hasNoGenerics, hasNoTypeClasses] 'uniform_Word8)
, $(inspectObligations [(`doesNotUse` 'StateGenM), hasNoGenerics, hasNoTypeClasses] 'uniform_Int8)
, $(inspectObligations [(`doesNotUse` 'StateGenM), hasNoGenerics, hasNoTypeClasses] 'uniform_Char)
, $(inspectObligations [(`doesNotUse` 'StateGenM), hasNoGenerics, hasNoTypeClasses] 'uniform_MyAction)
, $(inspectObligations [(`doesNotUse` 'StateGenM), hasNoGenerics, hasNoTypeClasses] 'uniformR_Word8)
, $(inspectObligations [(`doesNotUse` 'StateGenM), hasNoGenerics, hasNoTypeClasses] 'uniformR_Int8)
, $(inspectObligations [(`doesNotUse` 'StateGenM), hasNoGenerics, hasNoTypeClasses] 'uniformR_Char)
, $(inspectObligations [(`doesNotUse` 'StateGenM), hasNoGenerics, hasNoTypeClasses] 'uniformR_Double)
]