Îõ³h$7ƒ5oÜ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[  Safe-Inferred£\]^_`abcOption spec for TLT(c) John Maraist, 2022GPL3haskell-tlt@maraist.org experimentalPOSIX Safe-Inferred/TLTÎRecord of options which may be specified for running and reporting TLT tests.TLTDefault initial options.TLT*Update the display of showing passes in a  record.TLT*Update the display of showing passes in a  record.Results representation for TLT(c) John Maraist, 2022GPL3haskell-tlt@maraist.org experimentalPOSIX Safe-Inferred´ TLTÙHierarchical structure holding the result of running tests, possibly grouped into tests. TLTThe dßs are respectively the total number of tests executed, and total number of failures detected. TLTReasons why a test might fail. TLTA failure arising from an    which is not met. TLTÌA failure associated with a call to a Haskell function triggering an error. TLTDefault conversion of a   to a descriptive string.TLT0Return the number of failed tests reported in a .TLT*Return the number of tests described by a .TLT:Return the number of failed tests described in a list of s.TLT2Return the number of tests described in a list of s.     $Testing in a monad transformer layer(c) John Maraist, 2022GPL3haskell-tlt@maraist.org experimentalPOSIX Safe-Inferred CTLTûAccumulator for test results, in the style of a simplified Huet's zipper which only ever adds to the end of the structure.TLTAdd a single test result to a .TLT)Convert the topmost group of a bottom-up 3 into a completed top-down report about the group.TLT Derive a new ç corresponding to finishing the current group and continuing to accumulate results into its enclosure.TLT Convert a  into a list of top-down s.$Testing in a monad transformer layer(c) John Maraist, 2022GPL3haskell-tlt@maraist.org experimentalPOSIXNone>ÀÁÂÄΜ TLT Extending ¥ operations across other monad transformers. For easiest and most flexible testing, declare the monad transformers of your application as instances of this class.TLTýLift TLT operations within a monad transformer stack. Note that with enough transformer types included in this class, the liftTLT„ function should usually be unnecessary: the commands in this module which actually configure testing, or specify a test, already liftTLTÇ their own result. So they will all act as top-level transformers in MonadTLT.TLTáMonad transformer for TLT tests. This layer stores the results from tests as they are executed.TLT Synonym for the elements of the  state.TLT!Execute the tests specified in a Ô monad without output side-effects, returning the final options and result reports.ÊThis function is primarily useful when calling TLT from some other package. If you are using TLT itself as your test framework, and wishing to see its human-oriented output directly, consider using   instead. TLTThis function controls whether  Š will report only tests which fail, suppressing any display of tests which pass, or else report the results of all tests. The default is the former: the idea is that no news should be good news, with the programmer bothered only with problems which need fixing.!TLT(This function controls whether the main  ˜ executable should exit after displaying test results which include at least one failing test. By default, it will exit in this situation. The idea is that a test suite can be broken into parts when it makes sense to run the latter parts only when the former parts all pass."TLTÕReport a failure. Useful in pattern-matching cases which are entirely not expected.#TLTëOrganize the tests in the given subcomputation as a separate group within the test results we will report.  !"#  !"#$Testing in a monad transformer layer(c) John Maraist, 2022GPL3haskell-tlt@maraist.org experimentalPOSIXNone >ÀÁÂÄÎÔÙ 3TLT!Execute the tests specified in a / monad, and report the results as text output.¨When using TLT from some other package (as opposed to using TLT itself as your test framework, and wishing to see its human-oriented output directly), consider using  instead.4TLTReport the results of tests.5TLT2Command to set an ANSI terminal to boldface black.6TLT0Command to set an ANSI terminal to boldface red.7TLT2Command to set an ANSI terminal to boldface green.8TLT5Command to set an ANSI terminal to medium-weight red.9TLT7Command to set an ANSI terminal to medium-weight green.:TLT6Command to set an ANSI terminal to medium-weight blue.;TLT7Command to set an ANSI terminal to medium-weight black.<TLTÙCommand to set an ANSI terminal to the standard TLT weight and color for a passing test.=TLTÙCommand to set an ANSI terminal to the standard TLT weight and color for a failing test. 3456789:;<= 3456789:;<=(Assertions and related utilities for TLT(c) John Maraist, 2022GPL3haskell-tlt@maraist.org experimentalPOSIXNone%% >TLTÂAn assertion is a computation (typically in the monad wrapped by ª) which returns a list of zero of more reasons for the failure of the assertion. A successful computation returns an empty list: no reasons for failure, hence success.?TLT3This assertion always fails with the given message.@TLTThis assertion always succeeds.ATLTLabel and perform a test of an >.Example ¢test :: Monad m => TLT m () test = do "2 is 2 as result" ~: 2 @== return 2 -- This test passes. "2 not 3" ~: 2 @/=- 3 -- This test fails.BTLT3Label and perform a test of a (pure) boolean value.Example ‚test :: Monad m => TLT m () test = do "True passes" ~::- return True -- This test passes. "2 is 2 as single Bool" ~::- return (2 == 2) -- This test passes. "2 is 3!?" ~::- myFn 4 "Hammer" -- Passes if myFn (which -- must be monadic) -- returns True.CTLTÜLabel and perform a test of a boolean value returned by a computation in the wrapped monad m.Example Ûtest :: Monad m => TLT m () test = do "True passes" ~::- True -- This test passes. "2 is 2 as single Bool" ~::- 2 == 2 -- This test passes. "2 is 3!?" ~::- 2 == 2 -- This test fails.DTLT÷Transform a binary function on an expected and an actual value (plus a binary generator of a failure message) into an > for a pure given actual value.Example$TLT's scalar-testing operators like @==-! are defined with this function: ¥(@==-) :: (Monad m, Eq a, Show a) => a -> a -> Assertion m (@==-) = liftAssertion2Pure (==) $ \ exp actual -> "Expected " ++ show exp ++ " but got " ++ show actualThe e operator tests equality, and the result here allows the assertion that a value should be exactly equal to a target. The second argument formats the detail reported when the assertion fails.ETLT Given an >; for two pure values (expected and actual), lift it to an >? expecting the actual value to be returned from a computation.ExamplesThe TLT assertion `Test.TLT.(==)` lifts `Test.TLT.(==-)` (both defined in   Ü) from expecting a pure actual result to expecting a computation returning a value to test. Ù(@==) :: (Monad m, Eq a, Show a) => a -> m a -> Assertion m (@==) = assertion2PtoM (@==-)FTLTëTransform a binary function on expected and actual values (plus a generator of a failure message) into an >Á where the actual value is to be returned from a subcomputation.GTLTòTransform a unary function on a value (plus a generator of a failure message) into a unary function returning an > for a pure given actual value.ExampleThe TLT assertion   (defined in   ) is built from the f predicate g ™emptyP :: (Monad m, Traversable t) => t a -> Assertion m emptyP = liftAssertionPure null (\ _ -> "Expected empty structure but got non-empty")HTLT Given an >+ for a pure (actual) value, lift it to an >7 expecting the value to be returned from a computation.ExampleThe TLT assertion   (defined in   ÿ) on monadic computations returning lists is defined in terms of the corresponging assertion on pure list-valued expressions. Øempty :: (Monad m, Traversable t) => m (t a) -> Assertion m empty = assertionPtoM emptyPITLTßTransform a unary function on an actual value (plus a generator of a failure message) into an >: where the value is to be returned from a subcomputation. >?@ABCDEFGHI >?@ABCDEFGHIA0B0C0 Standard test operations for TLT(c) John Maraist, 2022GPL3haskell-tlt@maraist.org experimentalPOSIXNone4)JTLTÓAssert that two values are equal. This assertion takes an expected and an actual value; see K to compare the result of a monadic computation to an expected value.Examples  test :: Monad m => TLT m () test = do "Make sure that 2 is still equal to itself" ~: 2 @==- 2 "Make sure that there are four lights" ~: 4 @==- length lightsKTLTØAssert that a calculated value is as expected. This assertion compare the result of a monadic computation to an expected value; see J to compare an  actual value to the expected value.Examples ítest :: Monad m => TLT m () test = do "Make sure that 2 is still equal to itself" ~: 2 @== return 2 "Make sure that there are four lights" ~: 4 @== countLights -- where countLights :: m IntLTLT×Assert that two values are not equal. This assertion takes an expected and an actual value; see M to compare the result of a monadic computation to an expected value.MTLTçAssert that a calculated value differs from some known value. This assertion compares the result of a monadic computation to an expected value; see L to compare an  actual value to the expected value.NTLTïAssert that a given boundary is strictly less than some value. This assertion takes an expected and an actual value; see O to compare the result of a monadic computation to an expected value.OTLT¯Assert that a given, constant boundary is strictly less than some calculated value. This assertion compares the result of a /monadic computation/ to an expected value; see N to compare an  actual value to the expected value.PTLTïAssert that a given boundary is strictly less than some value. This assertion takes an expected and an actual value; see Q to compare the result of a monadic computation to an expected value.QTLT¯Assert that a given, constant boundary is strictly less than some calculated value. This assertion compares the result of a /monadic computation/ to an expected value; see P to compare an  actual value to the expected value.RTLTïAssert that a given boundary is strictly less than some value. This assertion takes an expected and an actual value; see S to compare the result of a monadic computation to an expected value.STLT¯Assert that a given, constant boundary is strictly less than some calculated value. This assertion compares the result of a /monadic computation/ to an expected value; see R to compare an  actual value to the expected value.TTLTïAssert that a given boundary is strictly less than some value. This assertion takes an expected and an actual value; see U to compare the result of a monadic computation to an expected value.UTLT¯Assert that a given, constant boundary is strictly less than some calculated value. This assertion compares the result of a /monadic computation/ to an expected value; see T to compare an  actual value to the expected value.VTLTÄAssert that a pure traversable structure (such as a list) is empty.WTLTÛAssert that a traversable structure (such as a list) returned from a computation is empty.XTLTÇAssert that a pure traversable structure (such as a list) is nonempty.YTLTßAssert that a traversable structure (such as a list) returned from a computation is non-empty.ZTLTAssert that a h value is i.[TLTAssert that a h result of a computation is i.JKLMNOPQRSTUVWXYZ[JKLMNOPQRSTUVWXYZ[ J1K1L1M1N1O1P1Q1R1S1T1U1 $Testing in a monad transformer layer(c) John Maraist, 2022GPL3haskell-tlt@maraist.org experimentalPOSIXNone5& !"#3>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[&3 !>ACB"#KMOQSUJLNPRTWYVX[Z?@GHIDEFê !"#$%&'())*+,-./0123456789:;<=>? @ABCDEFGHI JKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnompqrstruvrwxrwyú"TLT-0.3.0.0-5yC97sMEv8FLDpMZeeLFAuTest.TLT.OptionsTest.TLT.ResultsTest.TLT.BufferTest.TLT.ClassTest.TLT.ReportTest.TLT.AssertionTest.TLT.Standard Paths_TLTTest.TLT AssertiontltStandardemptyPemptyTLTopts optShowPassesoptQuitAfterFailReport defaultOptswithShowPasseswithExitAfterFail TestResultTestGroupTestFailAssertedErred formatFail failCount testCounttotalFailCounttotalTestCountTRBufBufTop addResult currentGrouppopGroup closeTRBufMonadTLTliftTLTTLTunwrapTLTstaterunTLTreportAllTestResultssetExitAfterFailDisplaytltFailinGroup$fMonadTLTWriterTn$fMonadTLTWriterTn0$fMonadTLTSTTn$fMonadTLTStateTn$fMonadTLTStateTn0$fMonadTLTResourceTn$fMonadTLTReaderTn$fMonadTLTMaybeTn$fMonadTLTIdentityTn$fMonadTLTFreeTn$fMonadTLTTLTm $fFunctorTLT$fApplicativeTLT $fMonadTLT$fMonadTransTLTreport boldBlackboldRed boldGreen mediumRed mediumGreen mediumBlue mediumBlack greenPassredFail assertFailed assertSuccess~:~::-~::liftAssertion2Pureassertion2PtoMliftAssertion2MliftAssertionPure assertionPtoMliftAssertionM@==-@==@/=-@/=@<-@<@>-@>@<=-@<=@>=-@>= nonemptyPnonemptynothingPnothingversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameghc-prim GHC.TypesInt GHC.Classes==baseData.Traversable Traversable Data.Foldablenull GHC.MaybeMaybeNothing