algebraic-graphs-0.1.0: test/Algebra/Graph/Test/IntAdjacencyMap.hs
-----------------------------------------------------------------------------
-- |
-- Module : Algebra.Graph.Test.IntAdjacencyMap
-- Copyright : (c) Andrey Mokhov 2016-2018
-- License : MIT (see the file LICENSE)
-- Maintainer : andrey.mokhov@gmail.com
-- Stability : experimental
--
-- Testsuite for "Algebra.Graph.IntAdjacencyMap".
-----------------------------------------------------------------------------
module Algebra.Graph.Test.IntAdjacencyMap (
-- * Testsuite
testIntAdjacencyMap
) where
import Algebra.Graph.IntAdjacencyMap
import Algebra.Graph.IntAdjacencyMap.Internal
import Algebra.Graph.Test
import Algebra.Graph.Test.Generic
import qualified Data.Graph as KL
import qualified Data.IntSet as IntSet
t :: Testsuite
t = testsuite "IntAdjacencyMap." empty
testIntAdjacencyMap :: IO ()
testIntAdjacencyMap = do
putStrLn "\n============ IntAdjacencyMap ============"
test "Axioms of graphs" (axioms :: GraphTestsuite IntAdjacencyMap)
test "Consistency of arbitraryAdjacencyMap" $ \m ->
consistent m
test "Consistency of fromAdjacencyList" $ \xs ->
consistent (fromAdjacencyList xs)
testShow t
testBasicPrimitives t
testFromAdjacencyList t
testIsSubgraphOf t
testProperties t
testAdjacencyList t
testPostIntSet t
testGraphFamilies t
testTransformations t
testDfsForest t
testDfsForestFrom t
testDfs t
testTopSort t
testIsTopSort t
putStrLn "\n============ IntAdjacencyMap.Internal.GraphKL ============"
test "map (fromVertexKL h) (vertices $ toGraphKL h) == IntSet.toAscList (vertexIntSet g)"
$ \g -> let h = mkGraphKL (adjacencyMap g) in
map (fromVertexKL h) (KL.vertices $ toGraphKL h) == IntSet.toAscList (vertexIntSet g)
test "map (\\(x, y) -> (fromVertexKL h x, fromVertexKL h y)) (edges $ toGraphKL h) == edgeList g"
$ \g -> let h = mkGraphKL (adjacencyMap g) in
map (\(x, y) -> (fromVertexKL h x, fromVertexKL h y)) (KL.edges $ toGraphKL h) == edgeList g