|r@      !"#$%&'()*+,-./0123456789:;<=>?@ABCOExecute IO actions on several threads and return their results in the original T order. It is guaranteed that no action from the input list is executed unless all S the items that precede it in the list have been executed or are executing at that  moment. Number of threads to use :Actions to execute: these will be scheduled left to right >Ordered results of executing the given IO actions in parallel DEMKeep grabbing items out of the infinite list of worker outputs until we have U recieved word that all of the workers have shut down. This lets us turn a possibly Y infinite list of outputs into a certainly finite one suitable for use with reorderFrom. FIThis function carefully shuffles the input list so it in the total order C defined by the integers paired with the elements. If the list is xs and ! the supplied initial integer is n, it must be the case that:  / sort (map fst xs) == [n..n + (length xs - 1)] JThis function returns items in the lazy result list as soon as it is sure * it has the right item for that position. CCGGGHIJHIJHIIJ KLMKLMKLM NNN OPQ ]Given a number of microseconds and an improving IO action, run that improving IO action only 9 for at most the given period before giving up. See also R. As   , but don'-t bother applying a timeout to the action if Nothing is given : as the number of microseconds to apply the time out for.     Like S2, but does not append a trailing newline if there % is at least one line. For example:  % unlinesConcise ["A", "B"] == "A\nB"  unlinesConcise [] == ""  Whereas:   unlines ["A", "B"] == "A\nB\n"  unlines [] == "" #This is closer to the behaviour of T, which does not append  a trailing space.      UVWXYZ[\]^_`abcdefghUdeUdeiTEvaluates the given list for the given number of microseconds. After the time limit T has been reached, a list is returned consisting of the prefix of the list that was / successfully evaluated within the time limit. This function does not= evaluate the elements of the list: it just ensures that the # list spine arrives in good order. XThe spine of the list is evaluated on the current thread, so if spine evaluation blocks R this function will also block, potentially for longer than the specificed delay. iijklmnopqrstuvwxyzklmnopqkmllmnpoopqGiven a C, returns a new random number generator based on that seed and the T actual numeric seed that was used to build that generator, so it can be recreated.  !FSeed that should be used to create random numbers for generated tests "IMaximum number of tests to generate when using something like QuickCheck #eMaximum number of unsuitable tests to consider before giving up when using something like QuickCheck $NThe number of microseconds to run tests for before considering them a failure %& !"#$%&&% !"#$ !"#$ !"#$%& '()*+,-./ '()*+,-./ /.'()*+,- '()*+,-()*+,-./ 0OMain test data type: builds up a list of tests to be run. Users should use the R utility functions in e.g. the test-framework-hunit and test-framework-quickcheck ! packages to create instances of 30), and then build them up into testsuites  by using ; and lists. 8For an example of how to use test-framework, please see   ]http://github.com/batterseapower/test-framework/raw/master/example/Test/Framework/Example.lhs 123(A single test of some particular type. 4$The name of a type of test, such as  Properties or  Test Cases . Tests of K types of the same names will be grouped together in the test run summary. 58Test names or descriptions. These are shown to the user 6LSomething test-like in its behaviour. The type parameters are the type that P is used for progress reports, the type of the final output of the test and the H data type encapsulating the whole potential to do a test respectively. 789;Something like the result of a test: works in concert with 6. L The type parameters are the type that is used for progress reports and the 4 type of the final output of the test respectively. :;1Assemble a number of tests into a cohesive group < 0123456789:;< 032112345678789::;<4  !"#$%&0123456789:;<'9:678540321;<  {|}~@A test that has been executed or is in the process of execution Top-level runner options  Tests to run {|}~{|}~~AAn overall description of the test suite run. This is currently C styled after the JUnit xml. It contains records that are not yet C used, however, it provides a sensible structure to populate as we C are able, and the serialiazation code behaves as though these are  filled. )The number of tests that triggered error % conditions (unanticipated failures) 3Count of tests that invalidated stated assertions. /Count of tests that were provided but not run. &The hostname that ran the test suite. The name of the test suite. $The total number of tests provided. -The total execution time for the test suite. 7The time stamp that identifies when this run happened. Included for completness w/ junit. #holdover from Junit spec. Could be ( used to specify the module under test. 4detailed description and results for each test run.  Serializes a  value to a . Maps a  value to an XML Element BGenerates XML elements for an individual test case or test group. BSets the specified attributes to the specified value in the given  Element:, returning a new Element with the change. This recurses  deeply through the Element, changing all attributes. Sets the attribute value to newV+ iff the attribute represents a classname.  =Records information about the run of a number of tests, such ? as how many tests have been run, how many are pending and how  many have passed or failed. @Records a count of the various kinds of test that have been run 7The number of tests of all kinds recorded in the given  DCreate some test statistics that simply records the total number of ? tests to be run, ready to be updated by the actual test runs. =Generates a description of the complete test run, given some A initial over-all test statistics and the list of tests that was  run. AThis is only specific to the XML code because the console output  Runner doesn'/t need this level of detail to produce summary < information, and the per-test details are generated during  execution. AThis could be done better by using a State monad in the notifier  defined within  issueTests. 5Displays statistics as a string something like this:   Properties Total  Passed 9 9  Failed 1 1  Total 10 10  Nothing7 signifies that usage information should be displayed.  JustQ simply gives us the contribution to overall options by the command line option. =>?=>?=>?=>? !"#$%&'()*+,-./05;<=>? 9:678540321;<         ! " # $ $ % & ' ( ) * + , - . / 0123456789:;<7=>?@ABCD>EFGEHIJKLMNOPQRSTUVWXYZ[\\] ^ _ ` a b c defgehiehj k k l m n o p q r s t u v w x y z { | }~etest-framework-0.3.1Test.Framework.Providers.APITest.Framework.SeedTest.Framework.OptionsTest.Framework.Runners.OptionsTest.Framework.Runners.Console!Test.Framework.Runners.ThreadPool(Test.Framework.Runners.Console.Utilities*Test.Framework.Runners.Console.ProgressBar%Test.Framework.Runners.Console.Colors!Test.Framework.Runners.ProcessorsTest.Framework.ImprovingTest.Framework.Utilities"Test.Framework.Runners.TestPattern'Test.Framework.Runners.TimedConsumption$Test.Framework.Runners.Console.TableTest.Framework.CoreTest.Framework.Runners.Core&Test.Framework.Runners.XML.JUnitWriter!Test.Framework.Runners.StatisticsTest.Framework.Runners.XML)Test.Framework.Runners.Console.Statistics"Test.Framework.Runners.Console.RunTest.Framework ImprovingIO:~> ImprovingFinishedbimapImproving improvingLastconsumeImprovingyieldImprovementrunImprovingIOliftIOtimeoutImprovingIOmaybeTimeoutImprovingIOKunKsecondsToMicrosecondsmicrosecondsToPicosecondslistToMaybeLast mappendByorElseonLeftonRightunlinesConcise mapAccumLMpadRightdropLastSeed RandomSeed FixedSeednewSeededStdGennewStdGenWithKnownSeed TestOptions' TestOptions topt_seedtopt_maximum_generated_tests'topt_maximum_unsuitable_generated_tests topt_timeoutCompleteTestOptionsRunnerOptions' RunnerOptions ropt_threadsropt_test_optionsropt_test_patternsropt_xml_outputropt_plain_outputCompleteRunnerOptionsTestPlusTestOptions TestGroup TestTypeNameTestNameTestlikerunTest testTypeNameTestResultlike testSucceeded testGroupplusTestOptions defaultMaindefaultMainWithArgsdefaultMainWithOpts WorkerEvent WorkerItemWorkerTermination executeOnPool poolWorkertakeWhileWorkersExist reorderFromhideCursorDuringProgress progressBar colorFail colorPasscolorPassOrFailprocessorCountIIOunIIOreifyListToImprovingbaseSystem.Timeouttimeout Data.Listunlinesunwords TestPatterntp_categories_only tp_negated tp_match_mode tp_tokensTestPatternMatchMode PathMatchMode TestMatchModeToken LiteralTokenDoubleWildcardToken WildcardToken SlashTokentokenizeparseTestPatterntestPatternMatchesbuildTokenRegexregexEscapeChar pathToStringconsumeListInInterval ColumnWidthColumnSeperatorColumnCell SeperatorCellTextCell renderTablefindColumnWidth findCellWidthrenderColumnsWithWidtheitherSideSeperatorisSeperatorColumnisSeperatorCellrenderFirstColumnCellcolumnFinishedcolumnDropHead FinishedTest RunningTest SomeImprovingRunTest RunTestGrouprunTests filterTests filterTestrunTest' runTests'completeTestOptionsRunDescriptionerrors failedCountskippedhostname suiteName testCounttime timeStamprunIdpackagetests serializeGHC.BaseStringtoXml morphTestCasesetAttributeValuesetUnsetClassNameTestStatisticsts_total_tests ts_run_teststs_passed_teststs_failed_tests TestCount unTestCounttestCountTestTypestestCountForTypeadjustTestCounttestCountTotalminusTestCountts_pending_teststs_no_failuresinitialTestStatisticsupdateTestStatistics totalRunTeststotalRunTestsListgatherStatistics produceReport mergeResultsshowFinalTestStatistics coloredNumbershowRunTestsTop showRunTest showRunTeststestStatisticsProgressBarshowImprovingTestResultshowImprovingTestResultProgress showImprovingTestResultProgress' possiblyPlain putTestHeaderSuppliedRunnerOptionsoptionsDescription interpretArgscompleteRunnerOptions