úÎ|Èy 9      !"#$%&'()*+,-./012345678sDefinitions of part-testcases, graphs of them, and an evaluation function to generate complete testcases (strings).(c) Hans-Jürgen Guth, 2014LGPLjuergen.software@freea2a.de experimental Safe-Inferred%Amany disjunct graphs Every part-graph has one end and one begin5Directed graph with one end, self-invented definition0A graph with more attributes, importing of a , only the part  is usedJConstructor for the "splitting" of graphs, comparable with an "if". The : makes the many ends and begins to one end and one begin+Constructor for one sub-graph after another4Constructor for a node alone, A node is a graph. XTypes of Caseparts, mainly (up to now only) for visualisation of the graph of Caseparts&The part-testcase, internal format of !P, with a writer-monad as stringFkt instead of the varFkt and the old stringFkt!The part-testcase#¶short description of the part-testcase, currently used a) at top of a testcase to show which path the generated testcase belongs to and b) in the visualised graph as node-label $elong description of the part-testcase currently generated in front of the code of the part-testcase%‡description of the condition, under which the part-testcase is valid (if not, the path with this part-testcase will not be generated)&Éthe actual code, which forms the part-testcase, dependent of the "configuration" (the "cnf" in 'Casepart cnf locals'), which is the test-data, and local variables, that are changed by a Casepart.'"The changes in the local variables(wthe condition under which the part-testcase is valid (if not, the path with this part-testcase will not be generated))ZType of the Casepart, mainly (up to now only) for visualisation in the graph of Caseparts*AAn empty testcase, all strings are "". The condition is always 9=. Shall serve as an starting point for own definitions of  Casepart's.++Convenience Function to make easily a mark.,IThe heart of this module, the final function. It takes configurations (cnfÊ means testvalues), that is a record of variables with a value, a function that describes the "prelude" of one testcase (without comment chars, which are later added) (a good starting value : the : -function of cnfh, so that the used test-values are printed on top of the testcase), the graph of testcases and returns voilá:Kthe list of testcases, ready to printed out in seperate files and to run.;tInternal help function, could be made more general for arbitrary getter functions and number of getter functions <CInternal function to comment the description with the commentString-$Function to create a splitted graph .Function to craete a  of two sub-graphs/Infix synonym for .=BFunction to create a node, Internal, with the CasepartInternal as a0eFunction to create a node, function for the user. If longDesc = "", shortDesc is used as longDesc.>@Internal Function to build the monad-function as the new codeFkt1·Function to add a testgraph to a dirgraph with converting-function f of the testdata ("cnfOld" resp. "cnfNew") and a Boolean, that says, if the subgraph should be expanded or not.2FFunction to add a testgraph to a dirgraph without converting-function?+The eval function of the EDSL. Evaluates a  to the list of all paths.@3the eval function of the EDSL for SplittedGraphs AyConverts between Caseparts. You need a interpreting from the target data-type to the source data-type (not vice versa) 3ÿConverts a DirGraph, for example our testgraphs. With that function you can import other testgraphs with another set of variables. You need a interpreting from the target data-type to the source data-type (not vice versa) BConverts a SplittedGraph4~Converts a testgraph, necessary in order to add a different testgraph ( with another type of configuration) to a dirGraphCLConvenience function for the case, that the return value of an embedded !> shall have no effect. The old local values keep unchanged.5Looks for all embedded  in a , double embedded  (identified by the attribute ) are ignored.?  !"#$%&'()*+,(how a text is coomented, ("# " or "-- ")a list of the testvalues?the initial value of the variables that the testcases change"prelude" of a testcase, i.e. : of cnfthe graph of caseparts6the final result: the list of testcases incl. comments;<-./=0>the old codeFkt2the change-function of the variables (old varFkt)the new codeFkt1;conversion function for the test-data-input of the casepartQconversion function for the variables the testcases uses/changes (input-side)ÿ conversion function for the variables the testcases uses/changes (output-side) that is: how shall the variables look after the run of the casepart? Dependant of the old value of the variables and the value of the variables after run of the imported testcase4Shall this Graph in the documation expanded or not ?$the Testgraph that shall be imported>the imported Testgraph, now a DirGraph with the correct types2?@A;conversion function for the test-data-input of the casepartQconversion function for the variables the testcases uses/changes (input-side)ÿ conversion function for the variables the testcases uses/changes (output-side) that is: how shall the variables look after the run of the casepart? Dependant of the old value of the variables and the value of the variables after run of the imported testcase#the Casepart that shall be imported,the imported Casepart with the correct types3;conversion function for the test-data-input of the casepartQconversion function for the variables the testcases uses/changes (input-side)ÿ conversion function for the variables the testcases uses/changes (output-side) that is: how shall the variables look after the run of the casepart? Dependant of the old value of the variables and the value of the variables after run of the imported testcase#the DirGraph that shall be imported,the imported DirGraph with the correct typesB4;conversion function for the test-data-input of the casepartQconversion function for the variables the testcases uses/changes (input-side)ÿ conversion function for the variables the testcases uses/changes (output-side) that is: how shall the variables look after the run of the casepart? Dependant of the old value of the variables and the value of the variables after run of the imported testcase$the Testgraph that shall be imported9the imported Testgraph with the correct types C56  !"#$%&'()*+,-./0123456!"#$%&'()   ,*+50/.-1234   !"#$%&'()*+,;<-./=0>12?@A3B4C5ZEvaluation of DirGraph's to FGL-Graphs, so that they can evaluated by the module graphviz.(c) Hans-Jürgen Guth, 2014LGPLjuergen.software@freea2a.de experimentalNone6Graph for Graphviz: a FGL-Graph7FThe heart of this module: DirGraph to VizGraph. Runs the state monad 8.8Rthe evaluate-function of the EDSL to generate a VizGraph. Normally the function 77 should be sufficent for the end-user. The state is a 6', that is used to apply the function Dÿ to it, that gives one or more new nodes. In this VizGraph the Nodes are simply added, edges are senseless and not added. The output is the resulting VizGraph and a tuple of the first Node and the last Node (remember: a DirGraph has exactly one begin and one end).678EFGH678786678EFGHI        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMTestExplode-0.1.0.0TestExplode.TestExplodeTestExplode.DirGraphCombine TestgraphdirGraphdocuInfo TGDocuInfoname descForNode descForTexgenerictoExpandExpandAsIs NotExpand SplittedGraphSplitDirGraphStructDGJoinConcSimpleDGCPTypeMarkNormalCPCasepartInternal shortDescI longDescI condDescIcodeFktI conditionIcpTypeICasepart shortDesclongDesccondDesccodeFktvarFkt conditioncpTypeemptyCpmarkCpgeneratesplitconc&-&mkEle mkGraph2Ele mkGraph2Ele0convertDirGraphconvertTestgraph getSubGraphsVizGraph mkVizGraphmkGraphBeginEndghc-prim GHC.TypesTruebaseGHC.ShowshowgetCodeAndConditionAndDesc mkCommentmkEleInt mkLogging cpGetPaths lcpGetPathsconvertCasepartconvertSplittedGraphemptyOut fgl-5.5.1.0Data.Graph.Inductive.GraphnewNodesmkSplittedGraph mkBeginNode mkEndNodeaddGraph