-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A Testing Framework for Haskell
--   
--   Hspec is a testing framework for Haskell. It is inspired by the Ruby
--   library RSpec. Some of Hspec's distinctive features are:
--   
--   <ul>
--   <li>a friendly DSL for defining tests</li>
--   <li>integration with QuickCheck, SmallCheck, and HUnit</li>
--   <li>parallel test execution</li>
--   <li>automatic discovery of test files</li>
--   </ul>
--   
--   The Hspec Manual is at <a>http://hspec.github.io/</a>.
@package hspec
@version 2.4.4



-- | <i>Deprecated: use <a>Test.Hspec.Core.Spec</a> instead</i>
module Test.Hspec.Core
describe :: String -> [SpecTree a] -> SpecTree a
it :: Example a => String -> a -> SpecTree (Arg a)

module Test.Hspec.Formatters


-- | <i>Warning: This module is used by <tt>hspec-discover</tt>. It is not
--   part of the public API and may change at any time.</i>
module Test.Hspec.Discover
type Spec = SpecWith ()
hspec :: Spec -> IO ()
class IsFormatter a
toFormatter :: IsFormatter a => a -> IO Formatter
hspecWithFormatter :: IsFormatter a => a -> Spec -> IO ()
postProcessSpec :: FilePath -> Spec -> Spec
describe :: () => String -> SpecWith a -> SpecWith a
instance Test.Hspec.Discover.IsFormatter (GHC.Types.IO Test.Hspec.Core.Formatters.Monad.Formatter)
instance Test.Hspec.Discover.IsFormatter Test.Hspec.Core.Formatters.Monad.Formatter


-- | <i>Deprecated: use <a>Test.Hspec.Contrib.HUnit</a> from package
--   <tt>hspec-contrib</tt> instead</i>
module Test.Hspec.HUnit

-- | Convert a HUnit test suite to a spec. This can be used to run existing
--   HUnit tests with Hspec.
fromHUnitTest :: Test -> Spec

module Test.Hspec.Runner


-- | Hspec is a testing framework for Haskell.
--   
--   This is the library reference for Hspec. The <a>User's Manual</a>
--   contains more in-depth documentation.
module Test.Hspec
type Spec = SpecWith ()
type SpecWith a = SpecM a ()
class Example e where {
    type family Arg e :: *;
}
it :: (HasCallStack, Example a) => String -> a -> SpecWith Arg a
specify :: (HasCallStack, Example a) => String -> a -> SpecWith Arg a
describe :: () => String -> SpecWith a -> SpecWith a
context :: () => String -> SpecWith a -> SpecWith a

-- | <tt>example</tt> is a type restricted version of <a>id</a>. It can be
--   used to get better error messages on type mismatches.
--   
--   Compare e.g.
--   
--   <pre>
--   it "exposes some behavior" $ example $ do
--     putStrLn
--   </pre>
--   
--   with
--   
--   <pre>
--   it "exposes some behavior" $ do
--     putStrLn
--   </pre>
example :: Expectation -> Expectation
parallel :: () => SpecWith a -> SpecWith a
runIO :: () => IO r -> SpecM a r
pending :: Expectation
pendingWith :: String -> Expectation
xit :: (HasCallStack, Example a) => String -> a -> SpecWith Arg a
xspecify :: (HasCallStack, Example a) => String -> a -> SpecWith Arg a
xdescribe :: () => String -> SpecWith a -> SpecWith a
xcontext :: () => String -> SpecWith a -> SpecWith a
type ActionWith a = a -> IO ()
before :: () => IO a -> SpecWith a -> Spec
before_ :: () => IO () -> SpecWith a -> SpecWith a
beforeWith :: () => (b -> IO a) -> SpecWith a -> SpecWith b
beforeAll :: () => IO a -> SpecWith a -> Spec
beforeAll_ :: () => IO () -> SpecWith a -> SpecWith a
after :: () => ActionWith a -> SpecWith a -> SpecWith a
after_ :: () => IO () -> SpecWith a -> SpecWith a
afterAll :: () => ActionWith a -> SpecWith a -> SpecWith a
afterAll_ :: () => IO () -> SpecWith a -> SpecWith a
around :: () => (ActionWith a -> IO ()) -> SpecWith a -> Spec
around_ :: () => (IO () -> IO ()) -> SpecWith a -> SpecWith a
aroundWith :: () => (ActionWith a -> ActionWith b) -> SpecWith a -> SpecWith b
hspec :: Spec -> IO ()

module Test.Hspec.QuickCheck
modifyMaxSuccess :: () => (Int -> Int) -> SpecWith a -> SpecWith a
modifyMaxDiscardRatio :: () => (Int -> Int) -> SpecWith a -> SpecWith a
modifyMaxSize :: () => (Int -> Int) -> SpecWith a -> SpecWith a

-- | <pre>
--   prop ".." $
--     ..
--   </pre>
--   
--   is a shortcut for
--   
--   <pre>
--   it ".." $ property $
--     ..
--   </pre>
prop :: (HasCallStack, Testable prop) => String -> prop -> Spec
