` S      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe,Simplifies the input string by interpreting \r and \bH characters specially so that the result string has the same final (or terminal, pun intended) appearance as would the input string when written to a terminal that overwrites character positions following carriage returns and backspaces.The helper function ta takes an accumulating ShowS-style function that holds  committedE lines of text, a (reversed) list of characters on the current line before@ the cursor, a (normal) list of characters on the current line after% the cursor, and the remaining input.An accumulating ShowS-style function that holds  committed lines of text5A (reversed) list of characters on the current line before the cursor3A (normal) list of characters on the current line after the cursorThe remaining inputSafe"|Report generator. This record type contains a number of functions that are called at various points throughout a test run.&Called at the beginning of a test run. Called at the end of a test run.(Called at the start of a test suite run.&Called at the end of a test suite run.'Called at the start of a test case run.-Called to report progress of a test case run.%Called at the end of a test case run.!Called when skipping a test case.<Called to report output printed to the system output stream.;Called to report output printed to the system error stream.Called when a test fails.$Called when a test reports an error.Composed into s.iUniquely describes the location of a test within a test hierarchy. Node order is from test case to root. Keeps track of the remaining tests and the results of the performed tests. As each test is performed, the path is removed and the counts are updated as appropriate."2The name of the case or suite currently being run.#.The path to the test case currently being run.$The current test statistics.%The current option values.&.The current option descriptions we know about.'WA record that holds the results of tests that have been performed up until this point.)Number of total cases.*Number of cases tried.+*Number of cases that failed with an error.,Number of cases that failed.-"Number of cases that were skipped..#Total number of assertions checked./3Number of assertions checked by the last test case.0A ' with all zero counts.1eA reporter containing default actions, which are to do nothing and return the user state unmodified.2Converts a test case path to a string, separating adjacent elements by a dot ('.'). An element of the path is quoted (as with ') when there is potential ambiguity.3NGewerate a string showing the entire qualified name from the reporting state.4 Combines two )s into a single reporter that calls both.& !"#$%&'()*+,-./01234& !"#$%&'()*+,-./01234& !"#$%&'()*+,-./02314   !"#$%&'()*+,-./01234None >-Generate an element for a property definition?5Generate an element for a set of property definitions@1Generate an element representing output to stdoutA1Generate an element representing output to stderrB0Generate an element representing a test failure.C4Generate an element representing an error in a test.D+Generate an element for a single test case.E+Generate an element for a skipped test caseF(Generate an element for a test suite runG9Generate the top-level element containing all test suitesH+A reporter that generates JUnit XML reports >The name/value pair?2A list of name/value pairs to make into properties@The stdout outputAThe stderr outputB%A message associated with the failureC#A message associated with the errorDThe name of the test.The path to the test (reported as "classname")$The number of assertions in the testThe execution time of the testFElements representing the events that happened during test execution.EThe name of the testThe path of the testF The name of the test suite%The properties defined for this suiteThe number of testsThe number of failuresThe number of errorsThe number of skipped tests1The hostname of the machine on which this was run(The timestamp at which time this was run%The execution time for the test suite 1The testcases and output nodes for the test suiteG The execution time of all suites)Elements representing all the test suitesH >?@ABCDEFGH >?@ABCDEFGH >?@ABCDEFGHSafeI7Specifies zero or more test suites, to which the given N? is then applied. If no test suites are specified, then the N applies to all test suites.KThe test suites to which the N6 applies. The empty set actually means 'all suites'.LThe N to apply.NKA tree-like structure that represents a set of tests within a given suite.PSelectorLs for subgroups of this one. The entry for each path element contains the SelectorX to be used for that group (or test). An empty map actually means 'select all tests'.QgTags by which to filter all tests. The empty set actually means 'run all tests regardless of tags'. O means that all tests will be skipped (though this will be overridden by any Selectors in selectorInners.S Combine two Qi fields into one. This operation represents the union of the tests that are selected by the two fields.4Take the difference of one set of tags from another.TA I& that selects all tests in all suites.UA N that selects all tests.0Eliminate redundant nested tags from a Selector.V Combine two Ns into a single N.@Collect all the selectors from filters that apply to all suites.CBuild a map from suite names to the selectors that get run on them.W.Take a list of test suite names and a list of Is, and build a 1 that says for each test suite, what (combined) N should be used to select tests.XParse a IZ expression. The format for filter expressions is described in the module documentation.YParse content from a testlist file. The file must contain one filter per line. Leading and trailing spaces are ignored, as are lines that contain no filter. A #5 will cause the parser to skip the rest of the line.ZGiven a @, get the contents of the file and parse it as a testlist file.%IJKLMNOPQRSTUVThe current filter;The map from suites to sets of selectors that run on them.WThe names of all test suites. The list of Is from which to build the map.XThe name of the source. The input.YThe name of the input file.The file content.Z[\IJKLMNOPQRSTUVWXYZNOPQIJKLMRSTUVWXZYIJKLMNOPQRSTUVWXYZ[\None09;3a&Provides a way to convert data into a Test or set of Test.b3Create a test with a given name and tag set from a Testable valuec3Create a test with a given name and no tags from a Testable valued3Create a test with a given name and no tags from a Testable valuee7Create a test with a synthetic name and no tags from a Testable valuefDefinition for a test suite. This is intended to be a top-level (ie. non-nestable) container for tests. Test suites have a name, a list of options with default values (which can be overridden either at runtime or statically using  ), and a set of   s to be run.CIndividual tests are described using definitions found in cabal's Distribution.TestSuiteQ module, to allow for straightforward integration with cabal testing facilities.hThe name of the test suite.i-Whether or not to run the tests concurrently.jTA list of all options used by this suite, and the default values for those options.kThe tests in the suite.A specialized form of l to handle lists.l0Allows the extension of the assertion mechanism. Since an o can be a sequence of  Assertions and IOe actions, there is a fair amount of flexibility of what can be achieved. As a rule, the resulting o5 should not assert multiple, independent conditions.7If more complex arrangements of assertions are needed,  s and a should be used.m Assertion with a failure messagen!Assertion with no failure message8Current counts of assertions, tried, failed, and errors.Events that have been loggedWhether or not the result of the test computation is already reflected here. This is used to differentiate between black box test and tests we've built with these tools.Text0 to attach to every failure message as a prefix.An * used to abort test execution immediately.&Whether this is a failure or an error.The failure (or error) message.pDoes the actual work of executing a test. This maintains the necessary bookkeeping recording assertions and failures, It also sets up exception handlers and times the test.Interface between invisible / and the rest of the test execution framework.HIndicate that the result of a test is already reflected in the testinfo.qIndicate test progress.r4Execute the given computation with a message prefix.sRecord sysout output.tRecord sysout output.u+Record that one assertion has been checked.v&Record an error, along with a message.w'Record a failure, along with a message.x0Get a combined failure message, if there is one.y0Get a combined failure message, if there is one.zUnconditionally signal that a failure has occurred. This will not stop execution, but will record the failure, resulting in a failed test.{TSignal that an assertion succeeded. This will log that an assertion has been made.|@Signal than an error has occurred and stop the test immediately.}Signal that a failure has occurred and stop the test immediately. Note that if an error has been logged already, the test will be reported as an error.~+Asserts that the specified condition holds.QSignals an assertion failure if a non-empty message (i.e., a message other than "" ) is passed.QSignals an assertion failure if a non-empty message (i.e., a message other than ""P) is passed. Allows a prefix to be supplied for the assertion failure message.Asserts that the specified actual value is equal to the expected value. The output message will contain the prefix, the expected value, and the actual value.)If the prefix is the empty string (i.e., ""R), then the prefix is omitted and only the expected and actual values are output.>Assert that the given computation throws a specific exception.PAssert that the given computation throws an exception that matches a predicate.Shorthand for ~.xAsserts that the specified actual value is equal to the expected value (with the expected value on the left-hand side).vAsserts that the specified actual value is equal to the expected value (with the actual value on the left-hand side).4Create a test suite from a name and a list of tests.ZCreates a test case resulting from asserting the condition obtained from the specified AssertionPredicable.Shorthand for a test case that asserts equality (with the expected value on the left-hand side, and the actual value on the right-hand side).Shorthand for a test case that asserts equality (with the actual value on the left-hand side, and the expected value on the right-hand side)."Creates a test from the specified a-, with the specified label attached to it.Since   is Testable6, this can be used as a shorthand way of attaching a  TestLabel to one or more tests.Oabcdefghijklmnop*The reporter to use for reporting results.The HUnit internal state.The reporter state.The test to run.qrstuvwxyzThe failure message{|}~4The message that is displayed if the assertion fails The condition8The message that is displayed with the assertion failure*Prefix to attach to the string if not nullString to assert is nullThe message prefixThe expected valueThe actual valueException to be caught+Computation that should throw the exceptionException to be caught+Computation that should throw the exception5A value of which the asserted condition is predicated2A message that is displayed if the assertion failsThe expected valueThe actual valueThe actual valueThe expected valueThe suite's name.The tests in the suite.5A value of which the asserted condition is predicated+A message that is displayed on test failureThe expected valueThe actual valueThe actual valueThe expected value9 acebdfghijklnmopqrstuvwxyz{|}~9 fghijkabcdeo{z}|~lmnqptsuwvryx:abcdefghijklmnopqrstuvwxyz{|}~1111110None Execute an individual test case.Log a skipped test case.Execute a given test (which may be a group), with the specified selector and report generators. Only tests which match the selector will be executed. The rest will be logged as skipped.-Run a test suite with a given set of options.Decide whether to execute a test suite based on a map from suite names to selectors. If the map contains a selector for the test suite, execute all tests matching the selector, and log the rest as skipped. If the map does not contain a selector, do not execute the suite, and do not log its tests as skipped.VTop-level function for a test run. Given a set of suites and a map from suite names to selectors, execute all suites that have selectors. For any test suite, only the tests specified by its selector will be executed; the rest will be logged as skipped. Suites that do not have a selector will be omitted entirely, and their tests will not be logged as skipped."Report generator for the test run.HUnit-Plus internal state.State for the report generator.The test to be executed."Report generator for the test run.HUnit-Plus internal state.State for the report generator.The test to be executed."Report generator for the test run.0The selector to apply to all tests in the suite.HUnit-Plus internal state.State for the report generator.The test to be executed.4Report generator to use for running the test suite.The options for this instance.The selector to use.HUnit-Plus internal state.State for the report generator.Test suite to be run.4Report generator to use for running the test suite.,The map containing selectors for each suite.HUnit-Plus internal state.State for the report generator.Test suite to be run.3Report generator to use for running the test suite.,The map containing selectors for each suite.State for the report generator.Test suite to be run.3Report generator to use for running the test suite.The processed filter to use.Test suite to be run.NoneCThe basic structure used to create an annotated tree of test cases.)A single, independent test case composed. A set of Test*s sharing the same level in the hierarchy.+A name or description for a subtree of the Tests.None The text-based reporters ( and B) construct strings and pass them to the function embodied in a ]. This function handles the string in one of several ways. Two schemes are defined here. * writes report lines to a given handle. * accumulates lines for return as a whole.The I function is also passed, and returns, an arbitrary state value (called st2 here). The initial state value is given in the !; the final value is returned by .,Writes persistent lines to the given handle. Accumulates lines for return by /. The accumulated lines are represented by a  ( -> )] function whose first argument is the string to be appended to the accumulated report lines. Create a 8 that outputs a textual report for non-terminal output. Execute a test, processing text output according to the given reporting scheme. The reporting scheme's state is threaded through calls to the reporting scheme's function and finally returned, along with final count values. The text is output in non-terminal mode.YThis function is deprecated. The preferred way to run tests is to use the functions in Test.HUnitPlus.Main.Execute a test suite, processing text output according to the given reporting scheme. The reporting scheme's state is threaded through calls to the reporting scheme's function and finally returned, along with final count values. The text is output in non-terminal mode.YThis function is deprecated. The preferred way to run tests is to use the functions in Test.HUnitPlus.Main.Execute the given test suites, processing text output according to the given reporting scheme. The reporting scheme's state is threaded through calls to the reporting scheme's function and finally returned, along with final count values. The text is output in non-terminal mode.YThis function is deprecated. The preferred way to run tests is to use the functions in Test.HUnitPlus.Main.+Converts test execution counts to a string.NTerminal output function, used by the run*TT function and terminal reporters.A reporter that outputs lines indicating progress to the terminal. Reporting is made to standard error, and progress reports are included. Execute a test, processing text output according to the given reporting scheme. The reporting scheme's state is threaded through calls to the reporting scheme's function and finally returned, along with final count values. The text is output in terminal mode.YThis function is deprecated. The preferred way to run tests is to use the functions in Test.HUnitPlus.Main.Execute a test suite, processing text output according to the given reporting scheme. The reporting scheme's state is threaded through calls to the reporting scheme's function and finally returned, along with final count values. The text is output in terminal mode.YThis function is deprecated. The preferred way to run tests is to use the functions in Test.HUnitPlus.Main.Execute the given test suites, processing text output according to the given reporting scheme. The reporting scheme's state is threaded through calls to the reporting scheme's function and finally returned, along with final count values. The text is output in terminal mode.YThis function is deprecated. The preferred way to run tests is to use the functions in Test.HUnitPlus.Main.The method for outputting text.&Whether or not to output verbose text.$A function which accumulates output./Whether or not to run the test in verbose mode.The test to run$A function which accumulates output.0Whether or not to run the tests in verbose mode.The test suite to run.#A function which accumulates output/Whether or not to run the test in verbose mode.The test to run  None0,Command-line options for generated programs.A file to which to write a JUnit-style XML report. The list must contain a single value, or be empty, or else the test program will report bad options. If the list is empty, no XML report will be generated.Filters in string format, specifying which tests should be run. If no filters are given, then all tests will be run. For information on the string format, see Test.HUnitPlus.Filter.A file to which to write a plain-text report. The list must contain a single value, or be empty, or else the test program will report bad options. If the list is empty, no report will be generated.#The behavior of the console output.Files from which to read testlists. Multiple files may be specified. The contents will be parsed and added to the list of filters specified on the command line.Console mode options.#Do not generate any console output.Report test counts interactively during execution, updating the number of tests run, skipped, failed, and errored as they execute.MReport a summary of tests run, skipped, failed, and errored after execution.*Report extra information as tests execute.Command-line options for the System.Console.CmdArgs module.&Read and parse a single test list file Translate an IOError into an error message#Get the file for reporting XML dataTCreate a standard test execution program from a set of test suites. The resulting main will process command line options as described, execute the appropirate tests, and exit with success if all tests passed, and fail otherwise..Top-level function for executing test suites.  is simply a wrapper around this function. This function allows users to supply their own options, and to decide what to do with the result of test execution.The command line options"Prefix to attach to error messagesException to interpretThe command line optionsKA monad parameterized by the xml report handle and the text report handle.The test suites to runThe filters to use"The mode to use for console outputThe Handle for XML reportingThe Handle for text reporting  NoneH acebdfghijklnmopqrstuvwxyz{|}~              !"#$%&'()**+,-./00123456789:;<=>?@ABCDEFGHIJKLMNOPQQRSTUUVWXYZ[\]^_`abcdefghijkllmnopqrstuvwxyz{|}~            'HUnit-Plus-2.0.0-Jprey1BNb5IJKgeHRNJHxuTest.HUnitPlus.BaseTest.HUnitPlus.TerminalTest.HUnitPlus.ReportingTest.HUnitPlus.XMLTest.HUnitPlus.FilterTest.HUnitPlus.ExecutionTest.HUnitPlus.LegacyTest.HUnitPlus.TextTest.HUnitPlus.MainTest.HUnitPlusCabal-1.24.0.0Distribution.TestSuite setOptionoptionstagsnamerun TestInstance groupTests concurrently groupName ExtraOptionsGroupTestterminalAppearanceReporter reporterStart reporterEndreporterStartSuitereporterEndSuitereporterStartCasereporterCaseProgressreporterEndCasereporterSkipCasereporterSystemOutreporterSystemErrreporterFailure reporterErrorNodeLabelPathStatestNamestPathstCounts stOptions stOptionDescsCountscCasescTriedcErrors cFailurescSkippedcAsserts cCaseAsserts zeroCountsdefaultReportershowPath showQualNamecombinedReporter $fEqCounts $fShowCounts $fReadCounts$fEqNode $fShowNode $fReadNode $fEqState $fShowState $fReadState propertyElempropertiesElem systemOutElem systemErrElem failureElem errorElem testcaseElemskippedTestElem testSuiteElemtestSuitesElem xmlReporterFilter filterSuitesfilterSelector filterOptionsSelectorselectorInners selectorTags OptionMap combineTags passFilter allSelectorcombineSelectorssuiteSelectors parseFilterparseFilterFileContentparseFilterFile$fHashableSelector $fOrdSelector $fEqSelector$fShowSelector $fEqFilter $fShowFilterTestable testNameTagstestNametestTagstest TestSuite suiteNamesuiteConcurrently suiteOptions suiteTests Assertable assertWithMsgassert Assertion executeTest heartbeat withPrefix logSysout logSyserr logAssertlogError logFailure getFailures getErrors assertFailure assertSuccess abortError abortFailure assertBool assertStringassertStringWithPrefix assertEqualassertThrowsExact assertThrows@?@=?@?= testSuite~?~=?~?=~: $fTestable[] $fTestableIO$fTestableTest$fListAssertableIO$fListAssertableChar$fAssertableIO$fAssertable[]$fAssertableProgress$fAssertableResult$fAssertableBool$fAssertable()$fExceptionTestException$fShowTestExceptionperformTestCase performTestperformTestSuiteperformTestSuitesTestCaseTestList TestLabel $fShowTestPutTextputTextToHandleputTextToShowS textReporter runTestText runSuiteText runSuitesText showCountsterminalReporter runTestTT runSuiteTT runSuitesTTOpts xmlreportfilters txtreportconsmodetestlist ConsoleModeQuietTerminalTextVerboseopts createMaintopLevel$fDataConsoleMode$fShowConsoleMode $fShowOpts $fDataOptstabaseGHC.ShowshowGHC.BaseNothingdiffTagsreduceSelectorcollectUniversalscollectSelectors3unordered-containers-0.2.8.0-5pNp3l8vBzrGaRUqynRgkTData.HashMap.BaseHashMapGHC.IOFilePathnoOptionsAllSelector nameParser valueParser optionParser optionsParser namesParser pathParser suitesParser tagsParser filterParser makeFilter commentParser lineParserListAssertable tiAssertstiEventstiIgnoreResulttiPrefix TestException GHC.Exception ExceptionteErrorteMsgreportTestInfoTestInfo ignoreResult listAssert tiHeartbeat errorCode failureCode sysOutCode sysErrCodetestinfo resetTestInfo syntheticNamewrapTest checkTestInfo skipTestCaseperformTestSuiteInstanceperformTestSuiteInternal initStateShowSStringtermPuteraseparseTestListsinterpretExceptionwithReportHandles executeTests