-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Tiny QuickCheck test library with minimal dependencies -- -- A tiny (1 module, <500 lines) property-based (and unit) testing -- library with minimal dependencies. -- -- Don't add a bunch of transitive dependencies just to test your code! -- -- Instead of reinventing the wheel (https://xkcd.com/927), we use -- a RSpec/HSpec-like API and run tests with QuickCheck. -- -- For simple use-cases, microspec is a drop-in replacement for hspec. -- --
-- import Test.Microspec -- -- main :: IO () -- main = microspec $ do -- describe "replicate" $ do -- it "doubles with 2" $ -- replicate 2 'x' === "xx" -- it "creates a list of the right size" $ -- \(Positive n) -> length (replicate n 'x') === n -- -- describe "reverse" $ do -- it "reverse . reverse === id" $ \l -> -- reverse (reverse l) === (l :: [Int]) -- -- describe "tail" $ -- it "length is -1" $ \(NonEmpty l) -> -- length (tail l :: [Int]) === length l - 1 -- -- describe "solve the halting problem" $ -- pending --@package microspec @version 0.2.1.2 -- | Tests can be structured as nested it / describe -- statements -- -- E.g. -- --
-- microspec $ do -- describe "plus" $ do -- it "adds positive numbers" $ do -- it "does 1 + 1" $ -- 1 + 1 === 2 -- it "does 2 + 2" $ -- 2 + 2 === 4 -- it "is commutative" $ -- \x y -> x + y === y + (x :: Int) ---- -- ...which will return, nicely in green instead of bold: -- --
-- plus -- adds positive numbers -- does 1 + 1 -- does 2 + 2 -- is commutative -- -- ----- -- Runtime: 0.00943336s -- Successes: 3, Pending: 0, Failures: 0 -- --module Test.Microspec -- | Run your spec. Put this at the top level, e.g.: -- --
-- main = microspec $ do -- describe "plus 1" $ -- 3 + 1 === 4 --microspec :: Microspec () -> IO () -- | microspec with MArgs microspecWith :: MArgs -> Microspec () -> IO () -- | Describe a test, e.g.: -- --
-- describe "reverse 'foo' is 'oof'" $ -- reverse "foo" === "oof" --describe :: MTestable t => String -> t -> Microspec () -- | An alias for describe. Usually used inside a describe -- block: -- --
-- describe "replicate" $ do -- it "doubles with 2" $ -- replicate 2 'x' === "xx" -- it "creates a list of the right size" $ -- \(Positive n) -> length (replicate n 'x') === n --it :: MTestable t => String -> t -> Microspec () -- | Describe a test as unwritten, e.g.: -- --
-- describe "meaning of life" $ pending --pending :: Pending -- | Note that you don't need to use this to create a test, e.g.: -- --
-- describe "reverse preserves length" $ -- \l -> length (reverse l) === length l --prop :: MTestable prop => String -> prop -> Microspec () -- | A series of tests, to run with microspec data Microspec a -- | Something which can be tested -- -- Note both Bools and Properties can be tested, but only Properties show -- the values that weren't equal -- -- For both unit tests and property tests, if you want to see the outputs -- of failed tests use ===. If you just want to test for equality, -- use ==. -- -- For example, the outputs of running: -- --
-- microspec $ do -- describe "baddies" $ do -- it "isn't 1 ==" $ 0 == (1 :: Int) -- it "isn't 1 ===" $ 0 === (1 :: Int) -- it "isn't always 1 ==" $ x -> x == (1 :: Int) -- it "isn't always 1 ===" $ x -> x === (1 :: Int) -- ---- -- are: -- --
-- isn't 1 == - *** Failed! Falsifiable (after 1 test) -- isn't 1 === - *** Failed! Falsifiable (after 1 test): | 0 /= 1 -- isn't always 1 == - *** Failed! Falsifiable (after 1 test): | 0 -- isn't always 1 === - *** Failed! Falsifiable (after 1 test): | 0 | 0 /= 1 -- --class MTestable t -- | Tweak how tests are run, with microspecWith. data MArgs MArgs :: Maybe Double -> Args -> MArgs -- | Number of seconds before each test times out. If you want to do this -- on a per-test basis, try within [_mArgs_timeoutSecs] :: MArgs -> Maybe Double -- | Arguments to use with QuickCheck tests [_mArgs_qcArgs] :: MArgs -> Args -- | Default arguments. Calling "microspec" is the same as calling -- "microspecWith defaultMArgs". defaultMArgs :: MArgs -- | Hspec compatibility. Equivalent to using === shouldBe :: (Eq x, Show x) => x -> x -> Property shouldSatisfy :: Show x => x -> (x -> Bool) -> Property instance GHC.Read.Read Test.Microspec.MArgs instance GHC.Show.Show Test.Microspec.MArgs instance GHC.Show.Show Test.Microspec.ResultCounts instance Test.Microspec.MTestable Test.QuickCheck.Property.Property instance Test.Microspec.MTestable GHC.Types.Bool instance Test.Microspec.MTestable (Test.Microspec.TestTree Test.QuickCheck.Property.Property) instance Test.Microspec.MTestable Test.Microspec.Pending instance Test.Microspec.MTestable (Test.Microspec.Microspec ()) instance (Test.QuickCheck.Arbitrary.Arbitrary a, GHC.Show.Show a, Test.QuickCheck.Property.Testable prop) => Test.Microspec.MTestable (a -> prop) instance GHC.Base.Functor Test.Microspec.Microspec instance GHC.Base.Applicative Test.Microspec.Microspec instance GHC.Base.Monad Test.Microspec.Microspec instance GHC.Show.Show (Test.Microspec.TestTree x)