packages feed

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_)