úÎjádõ8      !"#$%&'()*+,-./01234567  Safe-Inferred8BTake a list of actions and execute them in parallel, no more than n  at the same time 8#maximum number of parallel threads list of actions to execute 9889None ;The purpose of this data type is to capture the dictionary ' corresponding to a particular option. <A set of options. Only one option of each type can be kept. GIf some option has not been explicitly set, the default value is used. +An option is a data type that inhabits the  type class. ;The value to use if the option was not supplied explicitly +Try to parse an option value from a string FThe option name. It is used to form the command line option name, for F instance. Therefore, it had better not contain spaces or other fancy @ characters. It is recommended to use dashes instead of spaces. @The option description or help string. This can be an arbitrary  string. A command-line option parser. ?It has a default implementation in terms of the other methods. D You may want to override it in some cases (e.g. add a short flag). FEven if you override this, you still should implement all the methods ) above, to allow alternative interfaces. Set the option value Query the option value Change the option value <Safe read function. Defined here for convenience to use for  . :$Later options override earlier ones ;<= :    ;<= :None ;A pattern to filter tests. For the syntax description, see   4http://documentup.com/feuerbach/tasty#using-patterns !A pattern that matches anything. Parse a pattern FTest a path (which is the sequence of group titles, possibly followed & by the test title) against a pattern  >?@ABCDEFGHIJKLMNOPQR  ?>@ABCDFEGKJIHLMNOPQRNone4Number of parallel threads to use for running tests The list of all core options SSNoneT)Useful wrapper for use with foldTestTree /The main data structure defining a test suite. HIt consists of individual test cases and properties, organized in named * groups which form a tree-like hierarchy. CThere is no generic way to create a test case. Instead, every test F provider (tasty-hunit, tasty-smallcheck etc.) provides a function to  turn a test case into a . Groups can be created using %.  Add some options to child tests 1Assemble a number of tests into a cohesive group &A single test of some particular type 'The name of a test or a group of tests 4The interface to be implemented by a test provider.  The type t= is the concrete representation of the test which is used by  the provider.  Run the test @The list of options that affect execution of tests of this type Test progress information. HThis may be used by a runner to provide some feedback to the user while # a long-running test is executing. "textual information about the test' s progress  ) should be a value between 0 and 1. If it' s impossible ! to compute the estimate, use 0. !A test result ## should be U for a passed test and V for  a failed one. $$. may contain some details about the test. For  a passed test it'6s ok to leave it empty. Providers like SmallCheck and D QuickCheck use it to provide information about how many tests were  generated. For a failed test, $ should typically provide more  information about the failure. %3Create a named group of test cases or other groups &&Fold a test tree into a single value. CApart from pure convenience, this function also does the following  useful things:  ? Keeping track of the current options (which may change due to   nodes) 9 Filtering out the tests which do not match the patterns FThus, it is preferred to an explicit recursive traversal of the tree. >Note: right now, the patterns are looked up only once, and won't be 8 affected by the subsequent option changes. This shouldn't be a problem 9 in practice; OTOH, this behaviour may be changed later. W@Get the list of options that are relevant for a given test tree TXYoptions the test to run a callback to report progress  !"#$%&interpret a single test interpret a test group initial options WZTXY !"#$%&W TXY !"#$%&WZNone' Convert a test to a leaf of the  ' !"#$'!"#$ '' None (A (: is responsible for user interaction during the test run. It is provided with the )$, so the tests are already launched E and all it needs to do is notifying the user about the progress and 1 then displaying the overall results in the end.  The function'7s result should indicate whether all the tests passed. )GMapping from test numbers (starting from 0) to their status variables. CThis is what a runner uses to analyse and display progress, and to  detect when tests finish. [Int is the first free index IntMap maps test indices to:  the action to launch the test * the status variable of the launched test *Current status of a test +"test finished with a given result ,(test threw an exception and was aborted -test is being run .!test has not started running yet \Start executing a test ] Prepare the test tree to be run ^7Start running all the tests in the TestMap in parallel /FStart running all the tests in a test tree in parallel. The number of  threads is determined by the  option. BReturn a map from the test number (starting from 0) to its status  variable. 0 Execute a (. This is a shortcut which runs / behind the scenes. ()_[*+,-.\Cthe action to execute the test, which takes a progress callback as  a parameter variable to write status to ]^/0 ()*+,-./0 ()_[*.-,+\]^/0 None`,Compute the amount of space needed to align OKs and FAILs 1A simple console UI abcdefghijklm`1nopqrs1acbdefghijklm`1nopqrs None2EGenerate a command line parser for all the options relevant for this  test tree. Also includes . 3BGenerate a command line parser from a list of option descriptions 4FParse the command line arguments and run the tests using the provided  runner 234234234None &()*+,-./01234&234*.-,+)(0/1 None5FParse the command line arguments and run the tests using the standard  console runner 6;Locally adjust the option value for the given test subtree 78Locally set the option value for the given test subtree 567%4567%5467567t   !"#$%&'(()*++,-./0 1 2 3 4 5 6 7 8 9 : ; < =>?@ABCDDEFGHIJKLMNOPQRSTUVWXYZ[\][\^_Z`a b c d e b f g h g i j j k l m n o p q r s t u v wx tasty-0.2Test.Tasty.OptionsTest.Tasty.RunnersTest.Tasty.Providers Test.TastyTest.Tasty.ParallelTest.Tasty.PatternsTest.Tasty.CoreOptionsTest.Tasty.CoreTest.Tasty.Run Test.Tasty.UITest.Tasty.CmdLineOptionDescriptionOption OptionSetIsOption defaultValue parseValue optionName optionHelpoptionCLParser setOption lookupOption changeOptionsafeRead TestPattern noPatternparseTestPatterntestPatternMatches NumThreads getNumThreads coreOptionsTestTreePlusTestOptions TestGroup SingleTestTestNameIsTestrun testOptionsProgress progressTextprogressPercentResultresultSuccessfulresultDescription testGroup foldTestTree singleTestRunner StatusMapStatusDone Exception Executing NotStartedlaunchTestTree execRunnerrunUItreeOptionParser optionParserdefaultMainWithRunner defaultMain adjustOption localOption runInParallel myForkFinally$fMonoidOptionSet OptionValue NoPatterntp_categories_only tp_negated tp_match_mode tp_tokensTestPatternMatchMode PathMatchMode TestMatchModeToken LiteralTokenDoubleWildcardToken WildcardToken SlashTokentokenizebuildTokenRegexregexEscapeChar pathToStringdropLast$fIsOptionTestPattern$fReadTestPattern$fIsOptionNumThreads AppMonoidghc-prim GHC.TypesTrueFalsegetTreeOptionsgetApp$fMonoidAppMonoidTestMap executeTest createTestMap launchTestscomputeAlignmentMaximum MinusInfinityM RunnerStateix nestedLevelfailures initialState indentSizeindent formatDescfailokinfoOkinfoFailoutput$fMonoidMaximum