It/m      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl Safe-Inferredmnomnmno Safe-Inferred pqrstuvwxyz pqrstuvyzprqstuvwxyz Safe-Inferred*A type class for pretty-printable things.  Minimal complete definition: pretty. Pretty-print a single value. Pretty-print a list of things. !Pretty-print a single value as a {. !Utility function for inserting a = between two | values. }~B|}~  Safe-Inferred  None   Safe-Inferred                Safe-Inferred3An abstract type representing locations in a file.  Render a  as a {. Extract the file name of a . Extract the line number of a . Create a new location. The unknown location (file ? and line 0).  The file name The line number     None Options for running tests. Be quiet or not. %Run only tests matching this filter. If #, display a help message and exit. 5Regular expressions matching test names which should not run. A filter is a predicate on . If the predicate is , the flat test is run. 2A type class for things that can be run as tests.  Mainly used internally. Type for flattened tests. Abstract type for test suites. Abstract type for tests. 2Type for distinguishing different sorts of tests. Type for naming tests. An assertion is just an  action. !Construct a test where the given  checks a quick check property.  See   .  Mainly used internally. %Construct a unit test from the given  action.  See  .  Mainly used internally. *Construct a black box test from the given .  See  .  Mainly used internally. Create a named  from a list of  values. !Create an unnamed  from a list of  values. "Turn a  into a proper . # Extend a  with a list of  values $!Run something testable using the '. %"Run something testable, parse the  ' from the given commandline arguments. &!Parse commandline arguments into  . Here' s a synopsis ,of the format of the commandline arguments:  [OPTION ...] TEST_PATTERN ...  = where TEST_PATTERN is a posix regular expression matching " the names of the tests to run.  6 -v --verbose chatty output < -q --quiet only display errors 9 -n TEST_PATTERN --not=TEST_PATTERN tests to exclude = -h --help display this message ' The default  :  TestOptions {  opts_quiet = False  , opts_filter = const True  , opts_help = False  , opts_negated = []  } ('Runs something testable with the given  .  The result is * if all tests were executed successfully,  1 otherwise. In the latter case, an error code of 1 indicates @ that failures but no errors occurred, otherwise the error code 2 is used.  A test is  successful0 if the test terminates and no assertion fails.  A test is said to fail1 if an assertion fails but no other error occur. )MRuns something testable by parsing the commandline arguments as test options  (using &(). Exits with the exit code returned by %. : This function is the main entry point for running tests. C  !"#$%&'( !"#)*+,-./01$Testable thing 2%Commandline arguments Testable thing See ( for a specification of the 3 result &4'(56)789:  !"#$%&'())$%( '& !#"+   !"#$&%(' !"#)*+,-./01$2%&4'(56)789:None*EMark a unit test as pending without removing it from the test suite. ;<=>?@ABCDEFGH*I ;<=>?@DEFGH*I ;?>=<@ABCDEFGH*INone +:Use a value of this datatype to customize various aspects of your black box tests. -+File extension for the file used as stdin. .BFile extension for the file specifying expected output on stdout. /BFile extension for the file specifying expected output on stderr. 0Name of a file defining various arguments for executing the tests contained in a subdirectory of the test hierarchy. If a directory contains a such-named file, the arguments apply to all testfiles directly contained in this directory. See the documentation of 72 for a specification of the argument file format. 1Ge verbose or not. 2EDiff program for comparing output on stdout with the expected value. 3EDiff program for comparing output on stderr with the expected value. 47The type of a function comparing the content of a file +against a string, similar to the unix tool diff. ;The first parameter is the name of the file containing the &expected output. If this parameter is J, then no output Ais expected. The second parameter is the actual output produced. If the result is J then no difference was found.  Otherwise, a K( value contains a string explaining the  different. 5Sensible default values for +:  4defaultBBTArgs = BBTArgs { bbtArgs_stdinSuffix = ".in" 4 , bbtArgs_stdoutSuffix = ".out" 4 , bbtArgs_stderrSuffix = ".err" 4 , bbtArgs_dynArgsName = BBTArgs @ , bbtArgs_stdoutDiff = defaultDiff @ , bbtArgs_stderrDiff = defaultDiff < , bbtArgs_verbose = False } 6A default value for the 4% datatype that simple resorts to the diff commandline utility. 7[Collects all black box tests with the given file extension stored in a specific directory. For example, the invocation  J blackBoxTests "bbt-dir" "dist/build/sample/sample" ".num" defaultBBTArgs returns a list of  values, one  for each .num file found in bbt-dirG and its subdirectories. (The samples directory of the HTF source tree !contains the example shown here, see  3https://github.com/skogsbaer/HTF/tree/master/sample.) Suppose that one of the .num files is bbt-dir/ should-pass/x.num. Running the corresponding  invokes dist/build/sample/sample (the program under test) with bbt-dir/ should-pass/x.num as input file. If bbt-dir/ should-pass/x.num existed, its content +would be used as stdin. The tests succeeds ,if the exit code of the program is zero and 8the output on stdout and stderr matches the contents of bbt-dir/ should-pass/x.out and bbt-dir/ should-pass/x.err, respectively. The directory bbt-dir/ should-fail contains the file BBTArgs. If this file +exists, then its content specifies various Rarguments for the test run. The file defines the arguments separated by newlines. Supported arguments: Skip= Skips all tests in the same directory as the argument file. FailM Specify that the test should succeed if it exits with a non-zero exit code.  Flags: flags Passes the given flags to the program under test. "LMNOPQR+,-./0123STUVWXYZ[\4]^567%root directory of the test hierarchy name of program under test filename suffix for input file configuration _` +,-./01234567 +,-./01235746 LMNOPQR+,-./0123S TUVWXYZ[\4]^567_`None 8*Type class providing access to the custom a of a quick check property.  Used only internally. 9BAbstract type for representing quick check properties with custom a.  Used only internally. :The a! used if not explicitly changed. ;Change the default a* used to evaluate quick check properties. < Retrieve the aD currently used per default when evaluating quick check properties. =Turns a  property into an . This function - is used internally in the code generated by htfpp, do not use it directly. >Run a . property with modified quick check arguments a. ?Turns a  property with custom a into an . This function - is used internally in the code generated by htfpp, do not use it directly. @Use qcPending msg prop3 to mark the given quick check property as pending c without removing it from the test suite and without deleting or commenting out the property code. 8bc9defghij:;<=>&Modification function for the default a  Property ?@klmnopqrstuvwxyz{|}a~89:;<=>?@ :<;>@=?988bc9defghij:;<=>?@klmnNoneAFail with the given reason. BUse unitTestPending' msg test# to mark the given test as pending ^without removing it from the test suite and without deleting or commenting out the test code. C Fail if the  value is . The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use  assertBool_ and assertBoolVerbose_ directly, use the macros  assertBool and assertBoolVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. EFail if the two values of type a are not equal. U The first parameter denotes the expected value. Use these two functions  of a is an instance of  but not of . The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use  assertEqual_ and assertEqualVerbose_ directly, use the macros  assertEqual and assertEqualVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. GFail if the two values of type a are equal. U The first parameter denotes the expected value. Use these two functions  of a is an instance of  but not of . The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertNotEqual_ and assertNotEqualVerbose_ directly, use the macros assertNotEqual and assertNotEqualVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. IFail if the two values of type a are not equal. U The first parameter denotes the expected value. Use these two functions  of a is an instance of . The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertEqualPretty_ and assertEqualPrettyVerbose_ directly, use the macros assertEqualPretty and assertEqualPrettyVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. KFail if the two values of type a are equal. U The first parameter denotes the expected value. Use these two functions  of a is an instance of . The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertNotEqualPretty_ and assertNotEqualPrettyVerbose_ directly, use the macros assertNotEqualPretty and assertNotEqualPrettyVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. MFail if the two values of type a are not equal. U The first parameter denotes the expected value. Use these two functions  of a is neither an instance of  nor . Be aware that in this M case the generated error message might not be very helpful. The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertEqualNoShow_ and assertEqualNoShowVerbose_ directly, use the macros assertEqualNoShow and assertEqualNoShowVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. OFail if the two values of type a are equal. U The first parameter denotes the expected value. Use these two functions  of a is neither an instance of  nor . Be aware that in this M case the generated error message might not be very helpful. The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertNotEqualNoShow_ and assertNotEqualNoShowVerbose_ directly, use the macros assertNotEqualNoShow and assertNotEqualNoShowVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. Q*Fail if the two given lists are not equal W when considered as sets. The first list parameter E denotes the expected value. The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertListsEqualAsSets_ and assertListsEqualAsSetsVerbose_ directly, use the macros assertListsEqualAsSets and assertListsEqualAsSetsVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. S%Fail if the given list is empty. The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertNotEmpty_ and assertNotEmptyVerbose_ directly, use the macros assertNotEmpty and assertNotEmptyVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. U0Fail if the given list is a non-empty list. The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use  assertEmpty_ and assertEmptyVerbose_ directly, use the macros  assertEmpty and assertEmptyVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. WFail if executing the  action does not ? throw an exception satisfying the given predicate  (e -> Bool). The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertThrowsIO_ and assertThrowsIOVerbose_ directly, use the macros assertThrowsIO and assertThrowsIOVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. YFail if executing the  action does not % throw an exception. The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertThrowsSomeIO_ and assertThrowsSomeIOVerbose_ directly, use the macros assertThrowsSomeIO and assertThrowsSomeIOVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. [*Fail if evaluating the expression of type a does not ? throw an exception satisfying the given predicate  (e -> Bool). The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use  assertThrows_ and assertThrowsVerbose_ directly, use the macros  assertThrows and assertThrowsVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. ]*Fail if evaluating the expression of type a does not % throw an exception. The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertThrowsSome_ and assertThrowsSomeVerbose_ directly, use the macros assertThrowsSome and assertThrowsSomeVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. _Fail if the given  Either a b value is a . " Use this function if b is an instance of  The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use  assertLeft_ and assertLeftVerbose_ directly, use the macros  assertLeft and assertLeftVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. aFail if the given  Either a b value is a . The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertLeftNoShow_ and assertLeftNoShowVerbose_ directly, use the macros assertLeftNoShow and assertLeftNoShowVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. cFail if the given  Either a b value is a . " Use this function if a is an instance of  The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use  assertRight_ and assertRightVerbose_ directly, use the macros  assertRight and assertRightVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. eFail if the given  Either a b value is a . The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertRightNoShow_ and assertRightNoShowVerbose_ directly, use the macros assertRightNoShow and assertRightNoShowVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. gFail is the given Maybe a value is a J. The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use  assertJust_ and assertJustVerbose_ directly, use the macros  assertJust and assertJustVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. iFail is the given Maybe a value is a K. " Use this function if a is an instance of . The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertNothing_ and assertNothingVerbose_ directly, use the macros  assertNothing and assertNothingVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. kFail is the given Maybe a value is a K. The { parameter in the VerboseZ variant can be used to provide extra information about the error. Do not use assertNothingNoShow_ and assertNothingNoShowVerbose_ directly, use the macros assertNothingNoShow and assertNothingNoShowVerbose( instead. These macros, provided by the htfpp preprocessor, insert the  parameter automatically. DABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl-*ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl-DCFEJINMHGLKPORQTSVU\[^]XWZY`_badcfehgjilkA*BDABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl Noneopqrstuvwxyz{|}a~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl None !"#$%&&'()*+,-./0123456789:;;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                            !" !#$%$&''()*+,--./01234'56789:;<=>?@$ABCDEFGHIJKLMNOPQRSTUVWXYXZ[\\]^_`aabcdefghijklmnopqrHssttuvwxyzno{no|no}no~nononononononononononopnononononononononononononnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn ! !      HTF-0.9.0.0Test.Framework.PrettyTest.Framework.LocationTest.Framework.TestManagerTest.Framework.HUnitWrapperTest.Framework.BlackBoxTest Test.Framework.QuickCheckWrapperTest.Framework.ProcessTest.Framework.TestConfigTest.Framework.ColorsTest.Framework.DiffTest.Framework.UtilsTest.FrameworkQuickCheckWrapper HUnitWrapper BlackBoxTest"Test.Framework.TestManagerInternalTest QuickCheckTest.Framework.TutorialPrettypretty prettyList showPretty<=>LocationshowLocfileName lineNumbermakeLocunknownLocation TestOptions opts_quiet opts_filter opts_help opts_negatedFilter TestableHTFFlatTest TestSuiteTestSortQuickCheckTestUnitTestTestID AssertionmakeQuickCheckTest makeUnitTestmakeBlackBoxTest makeTestSuitemakeAnonTestSuitetestSuiteAsTestaddToTestSuiterunTestrunTestWithArgs parseTestArgsdefaultTestOptionsrunTestWithOptionshtfMainunitTestPendingBBTArgsbbtArgs_stdinSuffixbbtArgs_stdoutSuffixbbtArgs_stderrSuffixbbtArgs_dynArgsNamebbtArgs_verbosebbtArgs_stdoutDiffbbtArgs_stderrDiffDiffdefaultBBTArgs defaultDiff blackBoxTests WithQCArgsTestableWithQCArgs defaultArgssetDefaultArgsgetCurrentArgstestableAsAssertion withQCArgsasTestableWithQCArgs qcPending assertFailureunitTestPending'assertBoolVerbose_ assertBool_assertEqualVerbose_ assertEqual_assertNotEqualVerbose_assertNotEqual_assertEqualPrettyVerbose_assertEqualPretty_assertNotEqualPrettyVerbose_assertNotEqualPretty_assertEqualNoShowVerbose_assertEqualNoShow_assertNotEqualNoShowVerbose_assertNotEqualNoShow_assertListsEqualAsSetsVerbose_assertListsEqualAsSets_assertNotEmptyVerbose_assertNotEmpty_assertEmptyVerbose_ assertEmpty_assertThrowsIOVerbose_assertThrowsIO_assertThrowsSomeIOVerbose_assertThrowsSomeIO_assertThrowsVerbose_ assertThrows_assertThrowsSomeVerbose_assertThrowsSome_assertLeftVerbose_ assertLeft_assertLeftNoShowVerbose_assertLeftNoShow_assertRightVerbose_ assertRight_assertRightNoShowVerbose_assertRightNoShow_assertJustVerbose_ assertJust_assertNothingVerbose_assertNothing_assertNothingNoShowVerbose_assertNothingNoShow_ popenShellpopenpopen' ReportLevelInfoDebug TestConfigtc_quietdefaultTestConfig reportHandlereportFdreport useColorsbaseGHC.BaseStringpretty-1.1.1.0Text.PrettyPrint.HughesPJDoc $fPrettyBool $fPrettyInt $fPretty[] $fPrettyCharMode OneLineModeLeftMode ZigZagModePageModeStylemode lineLengthribbonsPerLinestyle fullRender renderStylerenderfsepfcatcatsep<+><>$+$$$ punctuatehangnestvcathsephcatbracesbracketsparens doubleQuotesquotesrationaldoublefloatintegerintrbracelbracerbracklbrackrparenlparenequalsspacecoloncommasemiisEmptyempty zeroWidthText sizedTextptexttextcharChrStrPStr TextDetails PrimColorNoColorWhiteYellow LightMagentaLightRed LightCyan LightGreen LightBlueDarkGrayGrayBrownMagentaRedCyanGreenBlueBlackColorfirstDiffColorsecondDiffColor skipDiffColor diffColor warningColortestStartColor testOkColor pendingColor startColorreset withColorcolorize DiffConfigdc_fromFirstPrefixdc_fromFirstSuffixdc_fromSecondPrefixdc_fromSecondSuffixdc_fromBothPrefixdc_fromBothSuffixdc_sep dc_skipPrefix dc_skipSuffixdc_lineFromFirstPrefixdc_lineFromSecondPrefixdc_lineFromFirstSuffixdc_lineFromSecondSuffixPos FirstLastLastMiddleFirstisLastisFirstisMiddlenoColorsDiffConfigcoloredDiffConfigdefaultTerminalDiffConfigdefaultNoColorsDiffConfig contextSizesingleLineDiff multiLineDiffdiffdiffWithSensibleConfigDirectoryEntryTypeOther DirectoryFilebasenamedirname startswithendswith dropPrefix dropSuffix replaceSuffix dropSpacedirectoryEntryType collectFiles maybeFile mapAccumLMreadM ensureNewlinestripghc-prim GHC.TypesTrueIOGHC.IO.Exception ExitSuccess ExitFailureHandleRedirection hr_originalhr_originalCopy hr_newHandlehr_newFilePathTR TestState ts_passed ts_failedts_error ts_pendingPathflatten AnonTestSuite CompoundTestBaseTest flattenTestflattenTestSuite concatPath initTestStateredirectHandleunredirectHandlecleanupRedirection runFlatTest runFlatTestsoptionDescriptionsExitCode usageHeader reportDocreportTR$fTestableHTFIO$fTestableHTF[]$fTestableHTFTestSuite$fTestableHTFTest TestResultPassPendingFailErrorextractPendingMessage pendingPrefixmakePendingMessageassertFailureHTFquickCheckTestErrorquickCheckTestFailquickCheckTestPendingquickCheckTestPass unitTestFailblackBoxTestFail Data.MaybeNothingJustDynamicConfigMap DynamicConfigdyn_skip dyn_flagsdyn_shouldFail dyn_verboseBlackBoxTestCfgbbtCfg_shouldFail bbtCfg_cmdbbtCfg_stdinFilebbtCfg_stdoutFilebbtCfg_stderrFilebbtCfg_verbosebbtCfg_stdoutCmpbbtCfg_stderrCmprunBlackBoxTest endOfOutput defaultDynCfg readDynCfgQuickCheck-2.5.1.1Test.QuickCheck.TestArgs argsModifieroriginalQCPendingExceptionQCStateqc_argsqcState$fWithQCArgsTestableWithQCArgs $fWithQCArgsa$fTestableTestableWithQCArgs$fExceptionQCPendingExceptionverboseCheckWithResultverboseCheckResultverboseCheckWith verboseCheckquickCheckWithResultquickCheckResultquickCheckWith quickCheckstdArgschattymaxSizemaxDiscardRatio maxSuccessreplayoutputlabelsnumTestsSuccessGaveUpreasonusedSizeusedSeed numShrinksFailureNoExpectedFailureResultTest.QuickCheck.Propertydisjoin.||.conjoin.&&..&. forAllShrinkforAllwithin==>coverclassifycollectlabelonce expectFailureverbose whenFail'whenFail printTestCase shrinkingmapSizeProperty exhaustivepropertyTestablePropTest.QuickCheck.ModifiersBlindFixed getOrderedOrdered OrderedList getNonEmptyNonEmpty NonEmptyList getPositivePositive getNonZeroNonZerogetNonNegative NonNegativeShrink2Smart Shrinking shrinkState shrinkInit ShrinkStateTest.QuickCheck.Arbitrary orderedListvectorcoarbitraryEnumcoarbitraryShowcoarbitraryRealcoarbitraryIntegral><shrinkRealFracshrinkIntegral shrinkNothingarbitrarySizedBoundedIntegralarbitraryBoundedEnumarbitraryBoundedRandomarbitraryBoundedIntegralarbitrarySizedFractionalarbitrarySizedIntegralshrink arbitrary Arbitrary coarbitrary CoArbitraryTest.QuickCheck.ExceptiondiscardTest.QuickCheck.GenvectorOflistOf1listOfgrowingElementselements frequencyoneof suchThatMaybesuchThatsamplesample'promotechooseresizesizedvariantGenTest.QuickCheck.TextrangesMkStrBoolFalseGHC.ShowShow Data.EitherRightLeftmkMsg _assertBool_equalityFailedMessagenotEqualityFailedMessage _assertEqual__assertNotEqual__assertEqualPretty__assertNotEqualPretty__assertEqualNoShow__assertNotEqualNoShow__assertListsEqualAsSets__assertNotEmpty_ _assertEmpty__assertThrowsIO__assertThrowsSomeIO__assertThrows__assertThrowsSome_ _assertLeft__assertLeftNoShow_ _assertRight__assertRightNoShow_ _assertJust__assertNothing__assertNothingNoShow_