hegel-0.1.0: src/Hegel.hs
-- | Hegel is a property-based testing library for Haskell. Hegel is based on
-- <https://github.com/hypothesisworks/hypothesis Hypothesis>, using the
-- <https://hegel.dev/ Hegel> protocol.
--
-- = Getting started
--
-- @
-- import Data.Default (def)
-- import Hegel
--
-- main :: IO ()
-- main = 'runHegelTest_' $ \\tc -> do
-- n <- 'draw' tc ('integers' def)
-- assert (n == n) "integer not equal to itself"
-- @
module Hegel
( -- * Running tests
runHegelTest,
runHegelTest_,
TestCase,
Settings
( settingsTestCases
, settingsVerbosity
, settingsSeed
, settingsDerandomize
, settingsDatabase
, settingsSuppressHealthCheck
),
defaultSettings,
def,
HealthCheck (..),
Verbosity (..),
Database (..),
-- * Drawing values
draw,
assume,
assert,
failure,
note,
target,
-- * Generators
Generator,
gmap,
flatMap,
gfilter,
-- ** Primitives
booleans,
integers,
floats,
RangeOpts (..),
defaultRangeOpts,
FloatOpts (..),
defaultFloatOpts,
text,
binary,
just,
-- ** Collections
lists,
hashmaps,
-- ** Combinators
sampledFrom,
oneOf,
optional,
tuples2,
tuples3,
tuples4,
ipAddresses,
ipv4Addresses,
ipv6Addresses,
-- ** Formats
emails,
urls,
domains,
dates,
times,
datetimes,
fromRegex,
-- * Conformance helpers
getTestCases,
writeMetrics,
-- * Exceptions
AssumeRejected (..),
DataExhausted (..),
HegelTestFailure (..),
)
where
import Data.Default (def)
import Hegel.Client
( AssumeRejected (..),
DataExhausted (..),
Database (..),
HealthCheck (..),
HegelTestFailure (..),
Settings
( settingsTestCases
, settingsVerbosity
, settingsSeed
, settingsDerandomize
, settingsDatabase
, settingsSuppressHealthCheck
),
TestCase,
Verbosity (..),
assume,
assert,
defaultSettings,
note,
target,
failure,
)
import Hegel.Conformance (getTestCases, writeMetrics)
import Hegel.Generator (Generator, draw, flatMap, gfilter, gmap)
import Hegel.Generator.Collections (hashmaps, lists)
import Hegel.Generator.Combinators
( ipAddresses,
oneOf,
optional,
sampledFrom,
tuples2,
tuples3,
tuples4,
)
import Hegel.Generator.Primitives
( FloatOpts (..),
RangeOpts (..),
binary,
booleans,
dates,
datetimes,
defaultFloatOpts,
defaultRangeOpts,
domains,
emails,
floats,
fromRegex,
integers,
ipv4Addresses,
ipv6Addresses,
just,
text,
times,
urls,
)
import Hegel.Session (runHegelTest, runHegelTest_)