!]O      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNSafeY0=>?@ABHDKIGSEFCJLMNOPQRTUVWXYZ[\]^_`abcdefghijkl0TUBHDKIGSEFCJLMNOPQR=>?@AVWXYZ[\]^k`abcdefghijl_k5SafeX : OPQRSTUVWXYZSafe$zHTF2An abstract type representing locations in a file.{HTF Render a z as a [.|HTFExtract the file name of a z.}HTFExtract the line number of a z.~HTFCreate a new location.HTFThe unknown location (file ? and line 0).~HTF The file nameHTFThe line numberz{|}~z|}{~NoneWX%Safe=?*&HTFHA type class for pretty-printable things. Minimal complete definition: pretty.HTFPretty-print a single value.HTFPretty-print a list of things.HTF!Pretty-print a single value as a [.HTF!Utility function for inserting a = between two 8 values.A   !"#$%&'()*+,-./012345678<:;9A   !"#$%&'()*+,-./012345678<:;9SafeX/\HTFRun a command using the shell.]HTFRun a command.\HTFCommandHTFContent of stdinHTF(stdout, stderr, exit code)]HTFBinaryHTF ArgumentsHTFContent of stdinHTF(stdout, stderr, exit code)\]Safe2>X@ HTF2The full result of a test, as used by HTF plugins.HTF"The location of a possible failureHTF1The "stack" to the location of a possible failureHTFAn error messageHTFThe outcome of the test, ^ means timeoutHTFThe summary result of a test.HTFAn assertion is just an _< action. Internally, the body of any test in HTF is of type H. If a test specification of a certain plugin has a type different from n, the plugin's preprocessor pass must inject wrapper code to convert the test specification into an assertion.Assertions may use  to signal a  different from F. If the assertion finishes successfully, the tests passes implicitly.|Please note: the assertion must not swallow any exceptions! Otherwise, timeouts and other things might not work as expected.HTF%Auxiliary function for contructing a .HTFZTerminate a HTF test, usually to signal a failure. The result of the test is given in the  argument.HTFMOpens a new assertion stack frame to allow for sensible location information.NoneAHTF(A type synonym for time in milliseconds.SafeKHTF;Type for evaluating a generic assertion as a pure function.HTF9Assertion passes successfully and yields the given value.HTFeAssertion fails with the given stack trace. In the stack trace, the outermost stackframe comes first.HTF+Stack trace element for generic assertions.HTF#A typeclass for generic assertions.HTF#Evaluates a generic assertion to a ` value.HTF$Evaluates a generic assertion to an a value. The result is Right x* if the assertion passes and yields value x, otherwise the result is Left err, where err is an error message.HTFFormats a stack trace. None=?~CHTF)Reports the overall results of all tests.HTF$Reports the result of a single test.HTF#Reports the start of a single test.HTF.Signals that test execution is about to start.HTF'Reports the IDs of all tests available.HTFA / provides hooks to customize the output of HTF.HTF0Called to report the IDs of all tests available.HTF-Called to report the start of test execution.HTF,Called to report the start of a single test.HTF-Called to report the result of a single test.HTF2Called to report the overall results of all tests.HTF Configuration of test execution.HTF0If set, displays messages only for failed tests.HTFUse Just i for parallel execution with i threads, Nothing for sequential execution.HTF'Shuffle tests before parallel executionHTF3Output destination of progress and result messages.HTF(Output destination of XML result summary HTFFilter for the tests to run. HTFTest reporters to use. HTFWhether to use colored output HTFPath to history file HTFHistory of previous test runsHTF*Sort ascending by previous execution timesHTF'Stop test run as soon as one test failsHTF!Do not regard timeout as an errorHTF<Maximum time in milliseconds a single test is allowed to runHTFQMaximum factor a single test is allowed to run slower than its previous executionHTF`Number of times to repeat tests selected on the command line before reporting them as a success.HTF9The destination of progress and result messages from HTF.HTFOutput goes to bH, boolean flag indicates whether the handle should be closed at the end.HTF2Output goes to files whose names are derived from c7 by appending a number to it. Numbering starts at zero.HTFThe  (test runner) monad.HTFThe state type for the  monad.HTFResults collected so far.HTF"Current index for splitted output.HTFThe result of running a (HTFThe result of a test run.HTFThe summary result of the test. HTF3The location where the test failed (if applicable).!HTFCInformation about the callers of the location where the test failed"HTF A message describing the result.#HTFExecution time in milliseconds.$HTFd if the execution took too long%HTFA type for call-stacks&HTFA filter is a predicate on (. If the predicate is d, the flat test is run.'HTF"Flattened representation of tests.(HTF3Generic type for flattened tests and their results.*HTFThe sort of the test.+HTFHierarchival path.,HTFPlace of definition.-HTFA generic payload..HTF0A type denoting the hierarchical name of a test.1HTF0Abstract type for test suites and their results.4HTF*Abstract type for tests and their results.7HTF#A type class for an assertion with >.:HTFSomething with >>HTFGeneral options for testsAHTF1Type for distinguishing different sorts of tests.EHTFType for naming tests.FHTF The default >GHTFShortcut for constructing a : value.HHTF Splits a .! into a list of test identifiers.IHTF'Creates a string representation from a ..JHTFReturns the final name of a .KHTFcReturns the name of the prefix of a test path. The prefix is everything except the last element.LHTF,Key of a flat test for the history database.NHTFThe initial test state.j      !"#$%&'()*+,-./0123456789:;<=>?@ADBCEFGHIJKLMNOjE456>?@789:;<=123ADBC./0()*+,-'&HIJKFGLN     OM% !"#$ None abcdefghijk edcabghijkf SafeXF xyz{|}~ {xyz|}~SafeNoneeHTFRandomly shuffle a list O(N)fghijklmnopqrstuvwxyz{ej6 None2=?EX HTF*Type class providing access to the custom |4 of a quick check property. Used only internally.}HTFExistential holding a ~ value. Used only internally.HTFBAbstract type for representing quick check properties with custom |. Used only internally.HTFThe | used if not explicitly changed.HTFChange the default |) used to evaluate quick check properties.HTF Retrieve the |C currently used per default when evaluating quick check properties.HTFTurns a  property into an =. This function is used internally in the code generated by htfpp, do not use it directly.HTFRun a . property with modified quick check arguments |.HTFUse qcPending msg prop to mark the given quick check property as pending without removing it from the test suite and without deleting or commenting out the property code.HTF Sets the  parameter of the |& datatype by parsing the given string.HTF&Modification function for the default |HTFProperty|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr  NoneNone>X HTFOFail with the given reason, supplying the error location and the error message.HTFSpecialization of gassertFailure.HTF.Signals that the current unit test is pending.HTFUse 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.HTF Fail if the ` value is s. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants  gassertBool and gassertBoolVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the  assertBool_, assertBoolVerbose_,  gassertBool_, and gassertBoolVerbose_* functions directly, use the macros  assertBool, assertBoolVerbose,  gassertBool , and gassertBoolVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the two values of type au are not equal. The first parameter denotes the expected value. Use these two functions of a is an instance of t but not of . The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants  gassertEqual and gassertEqualVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the  assertEqual_, assertEqualVerbose_,  gassertEqual_, and gassertEqualVerbose_* functions directly, use the macros  assertEqual, assertEqualVerbose,  gassertEqual , and gassertEqualVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the two values of type aq are equal. The first parameter denotes the expected value. Use these two functions of a is an instance of t but not of . The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertNotEqual and gassertNotEqualVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertNotEqual_, assertNotEqualVerbose_, gassertNotEqual_, and gassertNotEqualVerbose_* functions directly, use the macros assertNotEqual, assertNotEqualVerbose, gassertNotEqual , and gassertNotEqualVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the two values of type au are not equal. The first parameter denotes the expected value. Use these two functions of a is an instance of . The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertEqualPretty and gassertEqualPrettyVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertEqualPretty_, assertEqualPrettyVerbose_, gassertEqualPretty_, and gassertEqualPrettyVerbose_* functions directly, use the macros assertEqualPretty, assertEqualPrettyVerbose, gassertEqualPretty , and gassertEqualPrettyVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the two values of type aq are equal. The first parameter denotes the expected value. Use these two functions of a is an instance of . The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertNotEqualPretty and gassertNotEqualPrettyVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertNotEqualPretty_, assertNotEqualPrettyVerbose_, gassertNotEqualPretty_, and gassertNotEqualPrettyVerbose_* functions directly, use the macros assertNotEqualPretty, assertNotEqualPrettyVerbose, gassertNotEqualPretty , and gassertNotEqualPrettyVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the two values of type au are not equal. The first parameter denotes the expected value. Use these two functions of a is neither an instance of t nor e. Be aware that in this case the generated error message might not be very helpful. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertEqualNoShow and gassertEqualNoShowVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertEqualNoShow_, assertEqualNoShowVerbose_, gassertEqualNoShow_, and gassertEqualNoShowVerbose_* functions directly, use the macros assertEqualNoShow, assertEqualNoShowVerbose, gassertEqualNoShow , and gassertEqualNoShowVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the two values of type aq are equal. The first parameter denotes the expected value. Use these two functions of a is neither an instance of t nor e. Be aware that in this case the generated error message might not be very helpful. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertNotEqualNoShow and gassertNotEqualNoShowVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertNotEqualNoShow_, assertNotEqualNoShowVerbose_, gassertNotEqualNoShow_, and gassertNotEqualNoShowVerbose_* functions directly, use the macros assertNotEqualNoShow, assertNotEqualNoShowVerbose, gassertNotEqualNoShow , and gassertNotEqualNoShowVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the two given lists are not equal when considered as sets. The first list parameter denotes the expected value. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertListsEqualAsSets and gassertListsEqualAsSetsVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertListsEqualAsSets_, assertListsEqualAsSetsVerbose_, gassertListsEqualAsSets_, and gassertListsEqualAsSetsVerbose_* functions directly, use the macros assertListsEqualAsSets, assertListsEqualAsSetsVerbose, gassertListsEqualAsSets , and gassertListsEqualAsSetsVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTF%Fail if the given list is empty. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertNotEmpty and gassertNotEmptyVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertNotEmpty_, assertNotEmptyVerbose_, gassertNotEmpty_, and gassertNotEmptyVerbose_* functions directly, use the macros assertNotEmpty, assertNotEmptyVerbose, gassertNotEmpty , and gassertNotEmptyVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTF0Fail if the given list is a non-empty list. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants  gassertEmpty and gassertEmptyVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the  assertEmpty_, assertEmptyVerbose_,  gassertEmpty_, and gassertEmptyVerbose_* functions directly, use the macros  assertEmpty, assertEmptyVerbose,  gassertEmpty , and gassertEmptyVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTF2Fail if the given element is not in the list. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants  gassertElem and gassertElemVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the  assertElem_, assertElemVerbose_,  gassertElem_, and gassertElemVerbose_* functions directly, use the macros  assertElem, assertElemVerbose,  gassertElem , and gassertElemVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if executing the _Z action does not throw an exception satisfying the given predicate  (e -> Bool). The [ parameter in the Verbosed variant can be used to provide extra information about the error. Do not use the assertThrowsIO_ and assertThrowsIOVerbose_* functions directly, use the macros assertThrowsIO and assertThrowsIOVerbose. instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if executing the _@ action does not throw an exception. The [ parameter in the Verbosed variant can be used to provide extra information about the error. Do not use the assertThrowsSomeIO_ and assertThrowsSomeIOVerbose_* functions directly, use the macros assertThrowsSomeIO and assertThrowsSomeIOVerbose. instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if executing the mZ action does not throw an exception satisfying the given predicate  (e -> Bool). The [ parameter in the Verbosed variant can be used to provide extra information about the error. Do not use the assertThrowsM_ and assertThrowsMVerbose_* functions directly, use the macros  assertThrowsM and assertThrowsMVerbose. instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if executing the m@ action does not throw an exception. The [ parameter in the Verbosed variant can be used to provide extra information about the error. Do not use the assertThrowsSomeM_ and assertThrowsSomeMVerbose_* functions directly, use the macros assertThrowsSomeM and assertThrowsSomeMVerbose. instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTF*Fail if evaluating the expression of type aS does not throw an exception satisfying the given predicate  (e -> Bool). The [ parameter in the Verbosed variant can be used to provide extra information about the error. Do not use the  assertThrows_ and assertThrowsVerbose_* functions directly, use the macros  assertThrows and assertThrowsVerbose. instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTF*Fail if evaluating the expression of type a9 does not throw an exception. The [ parameter in the Verbosed variant can be used to provide extra information about the error. Do not use the assertThrowsSome_ and assertThrowsSomeVerbose_* functions directly, use the macros assertThrowsSome and assertThrowsSomeVerbose. instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the given  Either a b value is a u$. Use this function if b is an instance of t The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants  gassertLeft and gassertLeftVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the  assertLeft_, assertLeftVerbose_,  gassertLeft_, and gassertLeftVerbose_* functions directly, use the macros  assertLeft, assertLeftVerbose,  gassertLeft , and gassertLeftVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the given  Either a b value is a u. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertLeftNoShow and gassertLeftNoShowVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertLeftNoShow_, assertLeftNoShowVerbose_, gassertLeftNoShow_, and gassertLeftNoShowVerbose_* functions directly, use the macros assertLeftNoShow, assertLeftNoShowVerbose, gassertLeftNoShow , and gassertLeftNoShowVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the given  Either a b value is a v$. Use this function if a is an instance of t The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants  gassertRight and gassertRightVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the  assertRight_, assertRightVerbose_,  gassertRight_, and gassertRightVerbose_* functions directly, use the macros  assertRight, assertRightVerbose,  gassertRight , and gassertRightVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail if the given  Either a b value is a v. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertRightNoShow and gassertRightNoShowVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertRightNoShow_, assertRightNoShowVerbose_, gassertRightNoShow_, and gassertRightNoShowVerbose_* functions directly, use the macros assertRightNoShow, assertRightNoShowVerbose, gassertRightNoShow , and gassertRightNoShowVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail is the given Maybe a value is a ^. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants  gassertJust and gassertJustVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the  assertJust_, assertJustVerbose_,  gassertJust_, and gassertJustVerbose_* functions directly, use the macros  assertJust, assertJustVerbose,  gassertJust , and gassertJustVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail is the given Maybe a value is a w$. Use this function if a is an instance of t. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertNothing and gassertNothingVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertNothing_, assertNothingVerbose_, gassertNothing_, and gassertNothingVerbose_* functions directly, use the macros  assertNothing, assertNothingVerbose, gassertNothing , and gassertNothingVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFFail is the given Maybe a value is a w. The [ parameter in the Verbose] variants can be used to provide extra information about the error. The variants gassertNothingNoShow and gassertNothingNoShowVerboseR are generic assertions: they run in the IO monad and can be evaluated to a `# value. Do not use the assertNothingNoShow_, assertNothingNoShowVerbose_, gassertNothingNoShow_, and gassertNothingNoShowVerbose_* functions directly, use the macros assertNothingNoShow, assertNothingNoShowVerbose, gassertNothingNoShow , and gassertNothingNoShowVerbose( instead. These macros, provided by the htfpp preprocessor, insert the z parameter automatically. HTFSub assertions are a poor man's way of abstracting over assertions while still propagating location information. Say you want to abstract over the assertion that an x is positive. You would write LassertIsPositive :: Int -> Assertion assertIsPositive n = assertBool (n > 0)You can now use assertIsPositive i for some integer i[ from your unit tests, but if you call it directly you will lose location information: if assertIsPositive i- fails you will only get the location where assertIsPositive2 is defined but not from where it has been called.3To recover the location information you simply use subAssert (assertIsPositive i). In this case, if i: is not positive, you will get the location of the caller.Note:> Don't use subAssert_ directly but use the preprocessor macro  subAssert.HTFGeneric variant of .HTFSame as & but with an additional error message.HTFGeneric variant of .^^NoneNoneHTFInvokes " on all test reporters registered.HTFInvokes " on all test reporters registered.HTFInvokes " on all test reporters registered.HTFInvokes " on all test reporters registered.HTFInvokes " on all test reporters registered. HTF#The default test reporters for HTF.  NoneX9 HTF&Commandline options for running tests.HTFBe quiet or not.HTF$Run only tests matching this filter.HTFIf d", display a help message and exit.HTF5Regular expressions matching test names which should not run.HTFUse Just i for parallel execution with i threads, Nothing for sequential execution.HTFIf d8, shuffle tests when running them in parallel. Default: sHTF8Format output for machines (JSON format) or humans. See % for a definition of the JSON format.HTF,Output file for junit-style XML output. See $ for a definition of the XML format.HTFUse Just b" to enable/disable use of colors, Nothing infers the use of colors.HTF#The output file, defaults to stdoutHTFIf d&, lists all tests available and exits.HTFIf dM, each message is sent to a new ouput file (derived by appending an index to ).HTFHistory file, default: ..HTF ProgramName.historyHTFFFail and terminate test run as soon as the first test fails. Default: sHTF=Sort tests by their previous run times (ascending). Default: sHTFFIgnore tests with a runtime greater than given in a previous test run.HTF6Abort tests that run more than the given milliseconds.HTFDWarn if a test runs more than N times slower than in a previous run. HTF'Do not regard test timeout as an error.!HTF`Number of times to repeat tests selected on the command line before reporting them as a success."HTF The default  .#HTF!Parse commandline arguments into  @. Here is a synopsis of the format of the commandline arguments: USAGE: COMMAND [OPTION ...] PATTERN ... where PATTERN is a posix regular expression matching the names of the tests to run. -q --quiet Only display errors. -n PATTERN --not=PATTERN Tests to exclude. -l --list List all matching tests. -j[N] --threads[=N] Run N tests in parallel, default N=1. --shuffle=BOOL Shuffle test order. Default: false -o FILE --output-file=FILE Name of output file. --json Output results in machine-readable JSON format (incremental). --xml=FILE Output results in junit-style XML format. --split Splits results in separate files to avoid file locking (requires -o/--output-file). --colors=BOOL Use colors or not. --history=FILE Path to the history file. Default: ./.HTF/<ProgramName>.history --fail-fast Fail and abort test run as soon as the first test fails. --sort-by-prev-time Sort tests ascending by their execution of the previous test run (if available). Default: false --max-prev-ms=MILLISECONDS Do not try to execute tests that had a execution time greater than MILLISECONDS in a previous test run. --max-cur-ms=MILLISECONDS Abort a test that runs more than MILLISECONDS. --prev-factor=DOUBLE Abort a test that runs more than DOUBLE times slower than in a previous run. --timeout-is-success Do not regard a test timeout as an error. -h --help Display this message.$HTFThe string displayed for the --help option.%HTF Turn the   into a .   !"#$%   !"#$%NoneX&HTFJA type class for things that can be run as tests. Mainly used internally.'HTFKind of specialised y7 type class for tests, which allows you to modify the  s of the ''-thing without changing any test code.KE.g. if you want to add timeouts to all tests of a module, you could write: addTimeout test = timeout 100 test >>= assertJustVerbose "Timeout exceeded" testsWithTimeouts = wrap addTimeout htf_thisModulesTests)HTF!Construct a test where the given R checks a quick check property. Mainly used internally by the htfpp preprocessor.*HTF%Construct a unit test from the given _; action. Mainly used internally by the htfpp preprocessor.+HTF*Construct a black box test from the given . Mainly used internally.,HTFCreate a named 1 from a list of 4 values.-HTFCreate an unnamed 1 from a list of 4 values..HTFTurn a 1 into a proper 4./HTF Extend a 1 with a list of 4 valueszHTFDHTF uses this function to execute the given assertion as a HTF test.1HTF!Run something testable using the .2HTF!Run something testable using the .3HTF"Run something testable, parse the  _ from the given commandline arguments. Does not print the overall test results but returns an _ action for doing so.4HTF"Run something testable, parse the  & from the given commandline arguments.5HTF'Runs something testable with the given  . See 7 for a specification of the { result.6HTF'Runs something testable with the given  :. Does not print the overall test results but returns an _ action for doing so. See 7 for a specification of the { result.7HTF'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 1K indicates that failures but no errors occurred, otherwise the error code 2 is used. A test is  successfulC if the test terminates and no assertion fails. A test is said to fail0 if an assertion fails but no other error occur.8HTF'Runs something testable with the given :. Does not print the overall test results but returns an _ action for doing so. See 7 for a specification of the { result.9HTFURuns something testable by parsing the commandline arguments as test options (using #(). Exits with the exit code returned by 3;. This function is the main entry point for running tests.:HTFURuns something testable by parsing the commandline arguments as test options (using #(). Exits with the exit code returned by 3.1HTFTestable thingHTFSee 5 for a specification of the { result2HTFTestable thingHTF_S action for printing the overall test results, and exit code for the test run. See 5 for a specification of the { result3HTFCommandline argumentsHTFTestable thingHTFSee 7 for a specification of the { result.4HTFCommandline argumentsHTFTestable thingHTF_S action for printing the overall test results, and exit code for the test run. See 7 for a specification of the { result.      !"#$%&'()*+,-./0123456789:;<=>?@ADBCEFGHIJKLMNO&'()*+,-./0123456789:;9:12345678&'()*+,-/.0;NoneWQBHTFRUse a value of this datatype to customize various aspects of your black box tests.DHTF*File extension for the file used as stdin.EHTFAFile extension for the file specifying expected output on stdout.FHTFAFile extension for the file specifying expected output on stderr.GHTFName 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 NB for a specification of the argument file format. Default: BBTArgsHHTFBe verbose or not.IHTFDDiff program for comparing output on stdout with the expected value.JHTFDDiff program for comparing output on stderr with the expected value.~HTF.path to file holding expected output on stdoutHTF.path to file holding expected output on stderrKHTFbThe type of a function comparing the content of a file against a string, similar to the unix tool diffc. The first parameter is the name of the file containing the expected output. If this parameter is ^j, then output should not be checked. The second parameter is the actual output produced. If the result is ^, then no difference was found. Otherwise, a w3 value contains a string explaining the difference.LHTFSensible default values for B: defaultBBTArgs = BBTArgs { bbtArgs_stdinSuffix = ".in" , bbtArgs_stdoutSuffix = ".out" , bbtArgs_stderrSuffix = ".err" , bbtArgs_dynArgsName = "BBTArgs" , bbtArgs_stdoutDiff = defaultDiff , bbtArgs_stderrDiff = defaultDiff , bbtArgs_verbose = False } MHTFA default value for the K% datatype that simple resorts to the diff commandline utility.NHTFvCollects all black box tests with the given file extension stored in a specific directory. For example, the invocation HblackBoxTests "bbt-dir" "dist/build/sample/sample" ".num" defaultBBTArgsreturns a list of 4 values, one 4 for each .num file found in bbt-dirl 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 4 invokes dist/build/sample/sample (the program under test) with bbt-dir/should-pass/x.num as the last commandline argument. The other commandline arguments are taken from the flags specification given in the file whose name is stored in the G field of the B( record (see below, default is BBTArgs).If bbt-dir/should-pass/x.in existed, its content would be used as stdin. The tests succeeds if the exit code of the program is zero and the output on stdout and stderr matches the contents of bbt-dir/should-pass/x.out and bbt-dir/should-pass/x.err, respectively. If bbt-dir/should-pass/x.out and bbt-dir/should-pass/x.err* do not exist, then output is not checked.The G field of the B record specifies a filename that contains some more configuration flags for the tests. The following flags (separated by newlines) are supported: Skip;Skips all tests in the same directory as the argument file.FailKSpecify that the test should succeed if it exits with a non-zero exit code. Flags: flagsPasses the given flags to the program under test.NHTF$root directory of the test hierarchyHTFname of program under testHTFfilename suffix for input fileHTF configuration BCDEFGHIJKLMN BCDEFGHIJLNKMNoneWu|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr~1'()*,19: *),19:~1'( !"#!"$!"%!"&!"'!"(!"(!")!"*!"+!",!-.!-/!-0!-1!-2!-3!-4!-5!-6!-7!-8!-9!-:!-;!-<!-=!->!-?!-@!-A!-B!-C!-D!-E!-F!-G!-H!-I!-J!-K!-L!-M!-N!-O!-P!-Q!-R!-S!-T!-U!-V!-W!-X!-Y!-Z!"[!"\!"]!"^__`aabcdefghijklmnopqrsttuvwxyz{|}~                              ! " # $ % & ' ( ) * + , - . / 0 0 1 2 3 4 4 5 6 7 8 9 : ; < = > = ? @ A B C D E F F G  H I J K L M M N O P P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZZ[\]^_`abcdefghiejklmnlmoepqersetulmvwxyz{|}~        !!"##$%%&''(()*+,,-../001232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2abcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbyz{lm|e}~epepejlmefeee#HTF-0.14.0.0-JdUd3yCFyWg7avi6V0IbQpTest.Framework.HUnitWrapperTest.Framework.PrettyTest.Framework.ColorsTest.Framework.LocationTest.Framework.PreprocessorTest.Framework.TestInterfaceTest.Framework.HistoryTest.Framework.AssertMTest.Framework.TestTypesTest.Framework.JsonOutputTest.Framework.ThreadPool Test.Framework.QuickCheckWrapperTest.Framework.PrettyHaskellTest.Framework.XmlOutputTest.Framework.TestReporterTest.Framework.CmdlineOptionsTest.Framework.TestManagerTest.Framework.BlackBoxTestTest.Framework.DiffTest.Framework.ProcessTest.Framework.TutorialTest.Framework.UtilsTest QuickCheckTest.Framework JsonOutput XmlOutputTest.Framework.TestConfigdefaultCmdlineOptions$HUnit-1.6.0.0-JBiVBzVj1FE86jEg8qEgkqTest.HUnit.Lang HUnitFailurepretty-1.1.3.6#Text.PrettyPrint.Annotated.HughesPJModePageMode ZigZagModeLeftMode OneLineModeStylemode lineLengthribbonsPerLinestyleText.PrettyPrint.HughesPJ fullRender renderStylerenderfsepfcatcatsep<+>$+$$$ punctuatehangnestvcathsephcatbracesbracketsparens doubleQuotesquotesrationaldoublefloatintegerintrbracelbracerbracklbrackrparenlparenequalsspacecoloncommasemiisEmptyempty zeroWidthText sizedTextptexttextcharDocPStrStrChr TextDetails ColorString unColorStringPrimColorString PrimColorBlackBlueGreenCyanRedMagentaBrownGrayDarkGray LightBlue LightGreen LightCyanLightRed LightMagentaYellowWhiteNoColorColorfirstDiffColorsecondDiffColor skipDiffColor diffColor warningColortestStartColor testOkColor pendingColoremptyColorString maxLengthunlinesColorStringcolorStringFindensureNewlineColorStringcolorize colorizeText colorize' colorizeText'noColor noColorTextnoColor' noColorText'+++renderColorString$fIsStringColorString $fEqPrimColor$fShowPrimColor$fReadPrimColor $fEqColor $fShowColor $fReadColor$fEqPrimColorString$fShowPrimColorString$fReadPrimColorString$fEqColorString$fShowColorString$fReadColorStringLocationshowLocfileName lineNumbermakeLocunknownLocation $fEqLocation $fOrdLocation$fShowLocation$fReadLocationTransformOptionshunitBackwardsCompatdebug literateTexprogName transformpreprocessorTests$fEqDefinition$fShowDefinition$fShowImportDecl$fEqImportDecl$fShowModuleInfo$fEqModuleInfoPrettypretty prettyList showPretty<=> $fPrettyBool $fPrettyInt $fPretty[] $fPrettyCharHTFFailureException HTFFailureFullTestResult ftr_locationftr_callingLocations ftr_message ftr_result TestResultPassPendingFailError AssertionmkFullTestResultfailHTF subAssertHTF$fExceptionHTFFailureException$fShowTestResult$fReadTestResult$fEqTestResult$fEqFullTestResult$fShowFullTestResult$fReadFullTestResult$fShowHTFFailureExceptionHistoricTestResult htr_testId htr_result htr_timedOut htr_timeMs TestHistory MillisecondsemptyTestHistorymkTestRunHistoryupdateTestHistoryfindHistoricTestResult findHistoricSuccessfulTestResultserializeTestHistorydeserializeTestHistory historyTests$fFromJSONTestResult$fToJSONTestResult$fShowTestRunHistory$fShowTestHistory$fShowHistoricTestResult$fEqHistoricTestResult$fEqTestRunHistory$fEqTestHistory!$fFromJSONSerializableTestHistory$fToJSONSerializableTestHistory$fFromJSONTestRunHistory$fToJSONTestRunHistory$fFromJSONHistoricTestResult$fToJSONHistoricTestResult AssertBoolAssertOk AssertFailedAssertStackElem ase_message ase_locationAssertMgenericAssertFailure__genericSubAssert boolValue eitherValue formatStack $fAssertMIO$fAssertMAssertBool$fMonadAssertBool$fApplicativeAssertBool$fFunctorAssertBool$fEqAssertStackElem$fOrdAssertStackElem$fShowAssertStackElem$fReadAssertStackElem$fEqAssertBool$fOrdAssertBool$fShowAssertBool$fReadAssertBoolReportGlobalResultsReportGlobalResultsArg rgra_timeMs rgra_passed rgra_pending rgra_failed rgra_errors rgra_timedOut rgra_filteredReportTestResultReportTestStartReportGlobalStartReportAllTests TestReportertr_idtr_reportAllTeststr_reportGlobalStarttr_reportTestStarttr_reportTestResulttr_reportGlobalResults TestConfigtc_quiet tc_threads tc_shuffle tc_output tc_outputXml tc_filter tc_reporters tc_useColorstc_historyFile tc_historytc_sortByPrevTime tc_failFasttc_timeoutIsSuccesstc_maxSingleTestTime tc_prevFactor tc_repeat TestOutputTestOutputHandleTestOutputSplittedTR TestState ts_resultsts_indexFlatTestResult RunResult rr_result rr_location rr_callers rr_message rr_wallTimeMs rr_timeout CallStack TestFilterFlatTest GenFlatTestft_sortft_path ft_location ft_payloadTestPath TestPathBaseTestPathCompound TestSuite AnonTestSuiteBaseTest CompoundTestAssertionWithTestOptions testOptions assertionWithTestOptions wto_options wto_payload TestOptions to_parallelTestSortUnitTestQuickCheckTest BlackBoxTestTestIDdefaultTestOptions withOptionstestPathToListflatName finalName prefixName historyKeyattachCallStack initTestStateemptyTestReporter)$fAssertionWithTestOptionsWithTestOptions$fAssertionWithTestOptionsIO$fEqTestReporter$fShowTestReporter$fShowTestConfig $fEqTestSort$fShowTestSort$fReadTestSort$fEqTestOptions$fShowTestOptions$fReadTestOptions$fEqWithTestOptions$fShowWithTestOptions$fReadWithTestOptions$fShowTestPath$fShowTestOutput$fEqTestOutputTestObjTestResultsObj TestListObjTestEndEventObjTestStartEventObj HTFJsonObjmkTestStartEventObjmkTestEndEventObj mkTestListObjmkTestResultsObj decodeObj$fToJSONLocation$fToJSONTestSort$fToJSONTestPath$fHTFJsonObjTestResultsObj$fToJSONTestResultsObj$fToJSONTestObj$fHTFJsonObjTestListObj$fToJSONTestListObj$fHTFJsonObjTestEndEventObj$fToJSONTestEndEventObj$fHTFJsonObjTestStartEventObj$fToJSONTestStartEventObj ThreadPooltp_runThreadPoolEntryStopFlagDoStop DoNotStopsequentialThreadPoolparallelThreadPoolthreadPoolTest$fShowWorkItem$fShowWorkResult $fEqStopFlag$fShowStopFlag$fReadStopFlag QCAssertion WithQCArgs defaultArgssetDefaultArgsgetCurrentArgs qcAssertion withQCArgs qcPendingassertionAsPropertysetReplayFromString$fExceptionQCPendingException$fQCAssertionWithQCArgs$fQCAssertiona$fShowQCPendingException$fReadQCPendingException$fEqQCPendingException prettyHaskellprettyHaskell'prettyHaskellTests$fShowMySuperHero$fShowMySuperSuperHerogassertFailure_assertFailure_unitTestPendingunitTestPending'gassertBoolVerbose_ gassertBool_assertBoolVerbose_ assertBool_gassertEqualVerbose_ gassertEqual_assertEqualVerbose_ assertEqual_gassertNotEqualVerbose_gassertNotEqual_assertNotEqualVerbose_assertNotEqual_gassertEqualPrettyVerbose_gassertEqualPretty_assertEqualPrettyVerbose_assertEqualPretty_gassertNotEqualPrettyVerbose_gassertNotEqualPretty_assertNotEqualPrettyVerbose_assertNotEqualPretty_gassertEqualNoShowVerbose_gassertEqualNoShow_assertEqualNoShowVerbose_assertEqualNoShow_gassertNotEqualNoShowVerbose_gassertNotEqualNoShow_assertNotEqualNoShowVerbose_assertNotEqualNoShow_gassertListsEqualAsSetsVerbose_gassertListsEqualAsSets_assertListsEqualAsSetsVerbose_assertListsEqualAsSets_gassertNotEmptyVerbose_gassertNotEmpty_assertNotEmptyVerbose_assertNotEmpty_gassertEmptyVerbose_ gassertEmpty_assertEmptyVerbose_ assertEmpty_gassertElemVerbose_ gassertElem_assertElemVerbose_ assertElem_assertThrowsIOVerbose_assertThrowsIO_assertThrowsSomeIOVerbose_assertThrowsSomeIO_assertThrowsMVerbose_assertThrowsM_assertThrowsSomeMVerbose_assertThrowsSomeM_assertThrowsVerbose_ assertThrows_assertThrowsSomeVerbose_assertThrowsSome_gassertLeftVerbose_ gassertLeft_assertLeftVerbose_ assertLeft_gassertLeftNoShowVerbose_gassertLeftNoShow_assertLeftNoShowVerbose_assertLeftNoShow_gassertRightVerbose_ gassertRight_assertRightVerbose_ assertRight_gassertRightNoShowVerbose_gassertRightNoShow_assertRightNoShowVerbose_assertRightNoShow_gassertJustVerbose_ gassertJust_assertJustVerbose_ assertJust_gassertNothingVerbose_gassertNothing_assertNothingVerbose_assertNothing_gassertNothingNoShowVerbose_gassertNothingNoShow_assertNothingNoShowVerbose_assertNothingNoShow_ subAssert_ gsubAssert_subAssertVerbose_gsubAssertVerbose_hunitWrapperTestsmkGlobalResultsXml IsXmlOutput NoXmlOutput IsJsonOutput NoJsonOutput IsParallelParallel NonParallelreportAllTestsreportGlobalStartreportTestStartreportTestResultreportGlobalResultsisParallelFromBooldefaultTestReporters$fEqReportLevel$fOrdReportLevelCmdlineOptions opts_quiet opts_filter opts_help opts_negated opts_threads opts_shuffleopts_machineOutputopts_machineOutputXmlopts_useColorsopts_outputFileopts_listTests opts_splitopts_historyFile opts_failFastopts_sortByPrevTimeopts_maxPrevTimeMsopts_maxCurTimeMsopts_prevFactoropts_timeoutIsSuccess opts_repeat parseTestArgs helpStringtestConfigFromCmdlineOptions TestableHTF WrappableHTFwrapmakeQuickCheckTest makeUnitTestmakeBlackBoxTest makeTestSuitemakeAnonTestSuitetestSuiteAsTestaddToTestSuite flattenTestrunTestrunTest'runTestWithArgsrunTestWithArgs'runTestWithOptionsrunTestWithOptions'runTestWithConfigrunTestWithConfig'htfMainhtfMainWithArgswrappableTests$fWrappableHTFTest$fWrappableHTFTestSuite$fTestableHTFIO$fTestableHTF[]$fTestableHTFTestSuite$fTestableHTFTestBBTArgsbbtArgs_stdinSuffixbbtArgs_stdoutSuffixbbtArgs_stderrSuffixbbtArgs_dynArgsNamebbtArgs_verbosebbtArgs_stdoutDiffbbtArgs_stderrDiffDiffdefaultBBTArgs defaultDiff blackBoxTests DiffConfig dc_fromFirst dc_fromSecond dc_fromBothdc_sepdc_skipdc_lineFromFirstdc_lineFromSeconddiffdiffWithSensibleConfigmainbaseGHC.BaseString popenShellpopen GHC.MaybeNothingghc-prim GHC.TypesIOBool Data.EitherEitherGHC.IO.Handle.TypesHandleGHC.IOFilePathTrue shuffleIODirectoryEntryTypeFileOther Directorybasenamedirname startswithendswith dropPrefix dropSuffix replaceSuffix dropSpacedirectoryEntryType collectFiles maybeFile mapAccumLMreadM ensureNewlinestripmeasurediffClockTimes(QuickCheck-2.13.2-1FftnVviu6BCWJanU0jy5VTest.QuickCheck.TestArgs AnyTestableTest.QuickCheck.PropertyTestablereplayTest.QuickCheck.FeatureslabelledExamplesWithResultlabelledExamplesResultlabelledExamplesWithlabelledExamplesTest.QuickCheck.AllverboseCheckAll quickCheckAll allPropertiesforAllProperties monomorphicpolyVerboseCheckpolyQuickCheckverboseCheckWithResultverboseCheckResultverboseCheckWith verboseCheckquickCheckWithResultquickCheckResultquickCheckWith quickCheckstdArgs isSuccess maxSuccessmaxDiscardRatiomaxSizechatty maxShrinksResultSuccessFailureGaveUpNoExpectedFailurenumTests numDiscardedlabelsclassestablesoutput numShrinksnumShrinkTriesnumShrinkFinalusedSeedusedSizereason theExceptionfailingTestCase failingLabelsfailingClassestotal=/====disjoin.||.conjoin.&&..&.forAllShrinkBlindforAllShrinkShow forAllShrink forAllBlind forAllShowforAllwithin==> coverTabletabulatecoverclassifycollectlabel stdConfidencecheckCoverageWith checkCoveragewithMaxSuccessagainonce expectFailureverboseShrinkingverbose whenFail'whenFail printTestCasecounterexample noShrinking shrinkingmapSizeidempotentIOProperty ioPropertyPropertypropertypropertyForAllShrinkShowDiscardTest.QuickCheck.State Confidence certainty toleranceTest.QuickCheck.Function applyFun3 applyFun2applyFun functionMap functionVoid functionShowfunctionIntegralfunctionRealFracfunctionBoundedEnumFnFn2Fn3FunctionfunctionFunTest.QuickCheck.ModifiersBlindgetBlindFixedgetFixed OrderedListOrdered getOrdered NonEmptyListNonEmpty getNonEmpty InfiniteListgetInfiniteListinfiniteListInternalData SortedListSorted getSortedPositive getPositiveNegative getNegativeNonZero getNonZero NonNegativegetNonNegative NonPositivegetNonPositiveLargegetLargeSmallgetSmallShrink2 getShrink2Smart Shrinking ShrinkState shrinkInit shrinkState ASCIIStringgetASCIIString UnicodeStringgetUnicodeStringPrintableStringgetPrintableStringTest.QuickCheck.Arbitrary infiniteList orderedListvectorcoarbitraryEnumcoarbitraryShowcoarbitraryRealcoarbitraryIntegral><genericCoarbitrary shrinkDecimalshrinkRealFracshrinkIntegral shrinkMapBy shrinkMap shrinkNothingarbitraryPrintableChararbitraryASCIIChararbitraryUnicodeChararbitrarySizedBoundedIntegralarbitraryBoundedEnumarbitraryBoundedRandomarbitraryBoundedIntegralarbitrarySizedFractionalarbitrarySizedNaturalarbitrarySizedIntegralapplyArbitrary4applyArbitrary3applyArbitrary2 shrinkListsubtermsrecursivelyShrink genericShrinkshrink2 arbitrary2shrink1 arbitrary1 Arbitrary arbitraryshrink Arbitrary1 liftArbitrary liftShrink Arbitrary2liftArbitrary2 liftShrink2 CoArbitrary coarbitraryTest.QuickCheck.GeninfiniteListOfvectorOflistOf1listOfgrowingElementsshuffle sublistOfelements frequencyoneof suchThatMaybe suchThatMapsuchThatsamplesample'generatechoosescaleresizegetSizesizedvariantGenTest.QuickCheck.ExceptiondiscardFalseGHC.ShowShowRightLeftJustIntFunctorperformTestHTFGHC.IO.ExceptionExitCode ExitSuccess ExitFailurebbtCfg_stdoutFilebbtCfg_stderrFile