comfort-graph 0.0.5 → 0.0.5.1
raw patch · 3 files changed
+106/−107 lines, 3 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
Files
- comfort-graph.cabal +3/−3
- src/Data/Graph/Comfort.hs +0/−1
- test/Test/Data/Graph/Comfort.hs +103/−103
comfort-graph.cabal view
@@ -1,5 +1,5 @@ Name: comfort-graph-Version: 0.0.5+Version: 0.0.5.1 Synopsis: Graph structure with type parameters for nodes and edges Description: This graph structure is based on "Data.Map"@@ -60,7 +60,7 @@ Makefile Source-Repository this- Tag: 0.0.5+ Tag: 0.0.5.1 Type: darcs Location: https://hub.darcs.net/thielema/comfort-graph @@ -82,7 +82,7 @@ non-empty >=0.3 && <0.4, semigroups >=0.1 && <1, utility-ht >=0.0.10 && <0.1,- base >=4.5 && <5+ base >=4.11 && <5 Hs-Source-Dirs: src Default-Language: Haskell2010 GHC-Options: -Wall
src/Data/Graph/Comfort.hs view
@@ -500,7 +500,6 @@ (Edge edge, Ord node) => Monoid (Graph edge node edgeLabel nodeLabel) where mempty = empty- mappend = union {- |
test/Test/Data/Graph/Comfort.hs view
@@ -114,229 +114,229 @@ {-# LINE 477 "src/Data/Graph/Comfort.hs" #-} Graph.isConsistent (Graph.empty :: MonoGraph) )- DocTest.printPrefix "Data.Graph.Comfort:531: "-{-# LINE 531 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:530: "+{-# LINE 530 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 531 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 530 "src/Data/Graph/Comfort.hs" #-} \(GraphAndEdge gr e) -> Graph.lookupEdge e gr === Map.lookup e (Graph.edgeLabels gr) )- DocTest.printPrefix "Data.Graph.Comfort:549: "-{-# LINE 549 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:548: "+{-# LINE 548 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 549 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 548 "src/Data/Graph/Comfort.hs" #-} \(TestGraph gr) n -> Graph.lookupNode n gr === Map.lookup n (Graph.nodeLabels gr) )+ DocTest.printPrefix "Data.Graph.Comfort:599: "+{-# LINE 599 "src/Data/Graph/Comfort.hs" #-}+ DocTest.property(+{-# LINE 599 "src/Data/Graph/Comfort.hs" #-}+ \(TestGraph gr) n -> Graph.isConsistent $ deleteNodeIfExists n gr+ ) DocTest.printPrefix "Data.Graph.Comfort:600: " {-# LINE 600 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 600 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) n -> Graph.isConsistent $ deleteNodeIfExists n gr+ \(TestGraph gr) n nl -> Graph.deleteNode n (Graph.insertNode n nl gr) === deleteNodeIfExists n gr ) DocTest.printPrefix "Data.Graph.Comfort:601: " {-# LINE 601 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 601 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) n nl -> Graph.deleteNode n (Graph.insertNode n nl gr) === deleteNodeIfExists n gr+ \(TestGraph gr) -> let isolatedNodes = filter (isolated gr) $ Graph.nodes gr in not (null isolatedNodes) ==> QC.forAll (QC.elements isolatedNodes) $ \n nl -> Graph.insertNode n nl gr === Graph.insertNode n nl (Graph.deleteNode n gr) )- DocTest.printPrefix "Data.Graph.Comfort:602: "-{-# LINE 602 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:627: "+{-# LINE 627 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 602 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) -> let isolatedNodes = filter (isolated gr) $ Graph.nodes gr in not (null isolatedNodes) ==> QC.forAll (QC.elements isolatedNodes) $ \n nl -> Graph.insertNode n nl gr === Graph.insertNode n nl (Graph.deleteNode n gr)+{-# LINE 627 "src/Data/Graph/Comfort.hs" #-}+ \(GraphAndEdge gr e) -> Graph.isConsistent $ Graph.deleteEdge e gr ) DocTest.printPrefix "Data.Graph.Comfort:628: " {-# LINE 628 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 628 "src/Data/Graph/Comfort.hs" #-}- \(GraphAndEdge gr e) -> Graph.isConsistent $ Graph.deleteEdge e gr+ \(GraphAndEdge gr e) el -> Graph.deleteEdge e (Graph.insertEdge e el gr) === Graph.deleteEdge e gr ) DocTest.printPrefix "Data.Graph.Comfort:629: " {-# LINE 629 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 629 "src/Data/Graph/Comfort.hs" #-}- \(GraphAndEdge gr e) el -> Graph.deleteEdge e (Graph.insertEdge e el gr) === Graph.deleteEdge e gr- )- DocTest.printPrefix "Data.Graph.Comfort:630: "-{-# LINE 630 "src/Data/Graph/Comfort.hs" #-}- DocTest.property(-{-# LINE 630 "src/Data/Graph/Comfort.hs" #-} \(GraphAndEdge gr e) el -> Graph.insertEdge e el gr === Graph.insertEdge e el (Graph.deleteEdge e gr) )- DocTest.printPrefix "Data.Graph.Comfort:641: "-{-# LINE 641 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:640: "+{-# LINE 640 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 641 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 640 "src/Data/Graph/Comfort.hs" #-} \(GraphAndEdge gr e) -> Graph.filterEdgeWithKey (\ei _ -> e/=ei) gr === Graph.deleteEdge e gr )+ DocTest.printPrefix "Data.Graph.Comfort:693: "+{-# LINE 693 "src/Data/Graph/Comfort.hs" #-}+ DocTest.property(+{-# LINE 693 "src/Data/Graph/Comfort.hs" #-}+ \(TestGraph gr) n nl -> Graph.isConsistent $ Graph.insertNode n nl gr+ ) DocTest.printPrefix "Data.Graph.Comfort:694: " {-# LINE 694 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 694 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) n nl -> Graph.isConsistent $ Graph.insertNode n nl gr+ \(TestGraph gr) n nl -> Graph.lookupNode n (Graph.insertNode n nl gr) === Just nl )- DocTest.printPrefix "Data.Graph.Comfort:695: "-{-# LINE 695 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:706: "+{-# LINE 706 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 695 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) n nl -> Graph.lookupNode n (Graph.insertNode n nl gr) === Just nl+{-# LINE 706 "src/Data/Graph/Comfort.hs" #-}+ \(GraphAndEdge gr e) el -> Graph.isConsistent $ Graph.insertEdge e el gr ) DocTest.printPrefix "Data.Graph.Comfort:707: " {-# LINE 707 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 707 "src/Data/Graph/Comfort.hs" #-}- \(GraphAndEdge gr e) el -> Graph.isConsistent $ Graph.insertEdge e el gr- )- DocTest.printPrefix "Data.Graph.Comfort:708: "-{-# LINE 708 "src/Data/Graph/Comfort.hs" #-}- DocTest.property(-{-# LINE 708 "src/Data/Graph/Comfort.hs" #-} \(GraphAndEdge gr e) el -> Graph.lookupEdge e (Graph.insertEdge e el gr) === Just el )- DocTest.printPrefix "Data.Graph.Comfort:742: "-{-# LINE 742 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:741: "+{-# LINE 741 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 742 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 741 "src/Data/Graph/Comfort.hs" #-} \(TestGraph gr) -> gr === Graph.fromMap (Graph.nodeLabels gr) (Graph.edgeLabels gr) )- DocTest.printPrefix "Data.Graph.Comfort:785: "-{-# LINE 785 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:784: "+{-# LINE 784 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 785 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 784 "src/Data/Graph/Comfort.hs" #-} \(TestGraph gr) -> Graph.mapNode id gr === gr )- DocTest.printPrefix "Data.Graph.Comfort:798: "-{-# LINE 798 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:797: "+{-# LINE 797 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 798 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 797 "src/Data/Graph/Comfort.hs" #-} \(TestGraph gr) -> Graph.mapEdge id gr === gr )+ DocTest.printPrefix "Data.Graph.Comfort:833: "+{-# LINE 833 "src/Data/Graph/Comfort.hs" #-}+ DocTest.property(+{-# LINE 833 "src/Data/Graph/Comfort.hs" #-}+ \(TestGraph gr) nl -> Graph.isConsistent $ evalTraverseNode nl gr+ ) DocTest.printPrefix "Data.Graph.Comfort:834: " {-# LINE 834 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 834 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) nl -> Graph.isConsistent $ evalTraverseNode nl gr+ \(TestGraph gr) -> runIdentity (Graph.traverseNode (Identity . Char.toUpper) gr) === Graph.mapNode Char.toUpper gr )- DocTest.printPrefix "Data.Graph.Comfort:835: "-{-# LINE 835 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:847: "+{-# LINE 847 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 835 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) -> runIdentity (Graph.traverseNode (Identity . Char.toUpper) gr) === Graph.mapNode Char.toUpper gr+{-# LINE 847 "src/Data/Graph/Comfort.hs" #-}+ \(TestGraph gr) el -> Graph.isConsistent $ evalTraverseEdge el gr ) DocTest.printPrefix "Data.Graph.Comfort:848: " {-# LINE 848 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 848 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) el -> Graph.isConsistent $ evalTraverseEdge el gr+ \(TestGraph gr) el -> runIdentity (Graph.traverseEdge (Identity . (el+)) gr) === Graph.mapEdge (el+) gr )- DocTest.printPrefix "Data.Graph.Comfort:849: "-{-# LINE 849 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:859: "+{-# LINE 859 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 849 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) el -> runIdentity (Graph.traverseEdge (Identity . (el+)) gr) === Graph.mapEdge (el+) gr+{-# LINE 859 "src/Data/Graph/Comfort.hs" #-}+ \(TestGraph gr) nl el -> Graph.isConsistent $ evalTraverse nl el gr ) DocTest.printPrefix "Data.Graph.Comfort:860: " {-# LINE 860 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 860 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) nl el -> Graph.isConsistent $ evalTraverse nl el gr+ \(TestGraph gr) nl el -> evalTraverse nl el gr === evalTraverseNode nl (evalTraverseEdge el gr) ) DocTest.printPrefix "Data.Graph.Comfort:861: " {-# LINE 861 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 861 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) nl el -> evalTraverse nl el gr === evalTraverseNode nl (evalTraverseEdge el gr)+ \(TestGraph gr) nl el -> evalTraverse nl el gr === evalTraverseEdge el (evalTraverseNode nl gr) ) DocTest.printPrefix "Data.Graph.Comfort:862: " {-# LINE 862 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 862 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) nl el -> evalTraverse nl el gr === evalTraverseEdge el (evalTraverseNode nl gr)+ \(TestGraph gr) nl -> flip MS.evalState nl (Graph.traverseNode nodeAction gr) === flip MS.evalState nl (Graph.traverse nodeAction pure gr) ) DocTest.printPrefix "Data.Graph.Comfort:863: " {-# LINE 863 "src/Data/Graph/Comfort.hs" #-} DocTest.property( {-# LINE 863 "src/Data/Graph/Comfort.hs" #-}- \(TestGraph gr) nl -> flip MS.evalState nl (Graph.traverseNode nodeAction gr) === flip MS.evalState nl (Graph.traverse nodeAction pure gr)- )- DocTest.printPrefix "Data.Graph.Comfort:864: "-{-# LINE 864 "src/Data/Graph/Comfort.hs" #-}- DocTest.property(-{-# LINE 864 "src/Data/Graph/Comfort.hs" #-} \(TestGraph gr) el -> flip MS.evalState el (Graph.traverseEdge edgeAction gr) === flip MS.evalState el (Graph.traverse pure edgeAction gr) )- DocTest.printPrefix "Data.Graph.Comfort:901: "-{-# LINE 901 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:900: "+{-# LINE 900 "src/Data/Graph/Comfort.hs" #-} DocTest.example(-{-# LINE 901 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 900 "src/Data/Graph/Comfort.hs" #-} Graph.depthFirstSearch $ Graph.fromList [(0,'A'),(1,'B')] [(Graph.DirEdge 1 0, 23), (Graph.DirEdge 0 (1::Int), 42::Integer)] ) [ExpectedLine [LineChunk "[Node {rootLabel = 0, subForest = [Node {rootLabel = 1, subForest = []}]}]"]]- DocTest.printPrefix "Data.Graph.Comfort:908: "-{-# LINE 908 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:907: "+{-# LINE 907 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 908 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 907 "src/Data/Graph/Comfort.hs" #-} \(TestGraph gr) -> Graph.depthFirstSearch gr === GraphAlt.depthFirstSearch gr )- DocTest.printPrefix "Data.Graph.Comfort:945: "-{-# LINE 945 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:944: "+{-# LINE 944 "src/Data/Graph/Comfort.hs" #-} DocTest.example(-{-# LINE 945 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 944 "src/Data/Graph/Comfort.hs" #-} mapSnd Graph.nodes $ Graph.topologicalSort $ unlabGraph [] ['a'*->'a'] ) [ExpectedLine [LineChunk "(\"\",\"a\")"]]- DocTest.printPrefix "Data.Graph.Comfort:947: "-{-# LINE 947 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:946: "+{-# LINE 946 "src/Data/Graph/Comfort.hs" #-} DocTest.example(-{-# LINE 947 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 946 "src/Data/Graph/Comfort.hs" #-} mapSnd Graph.nodes $ Graph.topologicalSort $ unlabGraph [] ['a'*->'h', 'a'*->'p', 'g'*->'r', 'p'*->'h', 'r'*->'a'] ) [ExpectedLine [LineChunk "(\"graph\",\"\")"]]- DocTest.printPrefix "Data.Graph.Comfort:949: "-{-# LINE 949 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:948: "+{-# LINE 948 "src/Data/Graph/Comfort.hs" #-} DocTest.example(-{-# LINE 949 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 948 "src/Data/Graph/Comfort.hs" #-} mapSnd Graph.nodes $ Graph.topologicalSort $ unlabGraph [] ['h'*->'a', 'a'*->'p', 'g'*->'r', 'p'*->'h', 'r'*->'a'] ) [ExpectedLine [LineChunk "(\"gr\",\"ahp\")"]]- DocTest.printPrefix "Data.Graph.Comfort:972: "-{-# LINE 972 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:971: "+{-# LINE 971 "src/Data/Graph/Comfort.hs" #-} DocTest.example(-{-# LINE 972 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 971 "src/Data/Graph/Comfort.hs" #-} map Graph.nodes $ Graph.components $ unlabGraph ['d'] ['a'*->'p', 'g'*->'r', 'p'*->'h'] ) [ExpectedLine [LineChunk "[\"ahp\",\"d\",\"gr\"]"]]- DocTest.printPrefix "Data.Graph.Comfort:974: "-{-# LINE 974 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:973: "+{-# LINE 973 "src/Data/Graph/Comfort.hs" #-} DocTest.example(-{-# LINE 974 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 973 "src/Data/Graph/Comfort.hs" #-} map Graph.nodes $ Graph.components $ unlabGraph ['d'] ['a'*-*'p', 'g'*-*'r', 'p'*-*'h'] ) [ExpectedLine [LineChunk "[\"ahp\",\"d\",\"gr\"]"]]- DocTest.printPrefix "Data.Graph.Comfort:1019: "-{-# LINE 1019 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:1018: "+{-# LINE 1018 "src/Data/Graph/Comfort.hs" #-} DocTest.example(-{-# LINE 1019 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 1018 "src/Data/Graph/Comfort.hs" #-} Graph.stronglyConnectedComponents $ Graph.fromList [(0,'A'),(1,'B')] [(Graph.DirEdge 0 (1::Int),42::Integer)] ) [ExpectedLine [LineChunk "[fromList [0],fromList [1]]"]]- DocTest.printPrefix "Data.Graph.Comfort:1025: "-{-# LINE 1025 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:1024: "+{-# LINE 1024 "src/Data/Graph/Comfort.hs" #-} DocTest.example(-{-# LINE 1025 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 1024 "src/Data/Graph/Comfort.hs" #-} map Set.toAscList $ Graph.stronglyConnectedComponents $ unlabGraph ['d'] ['g'*->'r', 'r'*->'a', 'a'*->'g', 'a'*->'p', 'p'*->'h', 'h'*->'p'] ) [ExpectedLine [LineChunk "[\"agr\",\"d\",\"hp\"]"]]- DocTest.printPrefix "Data.Graph.Comfort:1031: "-{-# LINE 1031 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:1030: "+{-# LINE 1030 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 1031 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 1030 "src/Data/Graph/Comfort.hs" #-} \(TestGraph gr) -> @@ -344,19 +344,19 @@ === Set.fromList (GraphAlt.stronglyConnectedComponents gr) )- DocTest.printPrefix "Data.Graph.Comfort:1042: "-{-# LINE 1042 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:1041: "+{-# LINE 1041 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 1042 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 1041 "src/Data/Graph/Comfort.hs" #-} \forest -> let gr = Graph.fromForest (forest :: Forest Char) in all (\comp -> Set.size comp == 1) $ Graph.stronglyConnectedComponents gr )- DocTest.printPrefix "Data.Graph.Comfort:1048: "-{-# LINE 1048 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:1047: "+{-# LINE 1047 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 1048 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 1047 "src/Data/Graph/Comfort.hs" #-} \forest -> let gr = Graph.fromForest (forest :: Forest Char) in QC.forAll (genShuffledGraph gr) $ \(shuffled, _nodeMap) ->@@ -364,10 +364,10 @@ all (\comp -> Set.size comp == 1) $ Graph.stronglyConnectedComponents shuffled )- DocTest.printPrefix "Data.Graph.Comfort:1059: "-{-# LINE 1059 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:1058: "+{-# LINE 1058 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 1059 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 1058 "src/Data/Graph/Comfort.hs" #-} \(TestGraph gr) -> QC.forAll (genShuffledGraph gr) $ \(shuffled, nodeMap) ->@@ -377,10 +377,10 @@ === Set.fromList (Graph.stronglyConnectedComponents shuffled) )- DocTest.printPrefix "Data.Graph.Comfort:1073: "-{-# LINE 1073 "src/Data/Graph/Comfort.hs" #-}+ DocTest.printPrefix "Data.Graph.Comfort:1072: "+{-# LINE 1072 "src/Data/Graph/Comfort.hs" #-} DocTest.property(-{-# LINE 1073 "src/Data/Graph/Comfort.hs" #-}+{-# LINE 1072 "src/Data/Graph/Comfort.hs" #-} \(TestGraph gr) -> Set.fromList (map Graph.nodeSet (Graph.components gr))