----------------------------------------------------------------------------- -- Some simple tests of the graph library. ----------------------------------------------------------------------------- import Graph ------------------------------------------------------------------------- -- ...and now some simple tests: -- a simple graph: graph1 = Graph [Node n1, Node n2, Node n3] [Edge n1 n2, Edge n3 n2, Edge n1 n3, Edge n3 n3] where n1,n2,n3 free -- show this graph: main1 = showGraph graph1 -- a simple graph with an exported node: graph2 = (Graph [Node n1, Node n2, Node n3] [Edge n1 n2, Edge n3 n2, Edge n1 n3, Edge n3 n3], n1) where n1,n2,n3 free -- connect two graphs with their exported nodes: connectRootedGraphs (g1,r1) (g2,r2) = addEdge r1 r2 (joinGraphs g1 g2) main2 = showGraph (connectRootedGraphs graph2 graph2) -- a binary tree: btree n = if n==0 then (n1, Graph [Node n1] []) else joinRootedGraphs (btree (n-1)) (btree (n-1)) where n1 free main3 n = showGraph (snd (btree n)) -- a triangle structure: triag n = if n==0 then (n1,n2,n3, Graph [Node n1,Node n2,Node n3] [Edge n1 n2, Edge n2 n3, Edge n1 n3]) else joinTriags (triag (n-1)) (triag (n-1)) (triag (n-1)) where n1,n2,n3 free main4 n = let (_,_,_,g) = triag n in showGraph g k_4 = Graph [Node n1, Node n2, Node n3, Node n4] [Edge n1 n2, Edge n1 n3, Edge n1 n4, Edge n2 n3, Edge n2 n4, Edge n3 n4] where n1,n2,n3,n4 free k_5 = Graph [Node n1, Node n2, Node n3, Node n4, Node n5] [Edge n1 n2, Edge n1 n3, Edge n1 n4, Edge n1 n5, Edge n2 n3, Edge n2 n4, Edge n2 n5, Edge n3 n4, Edge n3 n5, Edge n4 n5] where n1,n2,n3,n4,n5 free -- some auxiliary functions for graph construction: joinRootedGraphs (r1,g1) (r2,g2) = (r, addEdge r r1 (addEdge r r2 (addNode r (joinGraphs g1 g2)))) where r free joinTriags (r1a,r1b,r1c,g1) (r2a,r2b,r2c,g2) (r3a,r3b,r3c,g3) = (r1a,r2b,r3c,addEdge r1b r2a (addEdge r1c r3a (addEdge r2c r3b (joinGraphs g1 (joinGraphs g2 g3)))))