{-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -fno-warn-missing-signatures #-} import Test.QuickCheck import System.Terminfo.Internal import Data.Maybe prop_useOverride ovr = forAll notLikely $ \usr -> forAll notLikely $ \tds -> forAll oftenNull $ \defs -> classify (isNothing usr && isNothing tds && null defs) "Nothing else specified"$ classify (isJust usr && isJust tds && not (null defs)) "Everything else specified"$ locationsPure (Just ovr) usr tds defs == [ovr] notLikely = frequency [(2, return Nothing), (1, fmap Just arbitrary)] oftenNull = frequency [(2, return []), (1, arbitrary)] prop_includeHome usr = forAll notLikely $ \tds -> forAll oftenNull $ \defs -> let withUsr = locationsPure Nothing (Just usr) tds defs withoutUsr = locationsPure Nothing Nothing tds defs in classify (isJust tds || not (null defs)) "Something besides HOME specified"$ withUsr == usr : withoutUsr prop_terminfoDirsOverridesDefaults tds = forAll (oneof [return [], listOf1 arbitrary]) $ \defs -> classify (not $ null defs) "Defaults specified"$ locationsPure Nothing Nothing (Just tds) defs == parseTDVar defs tds prop_useDefaults defs = locationsPure Nothing Nothing Nothing defs == defs return [] main = $quickCheckAll