import Test.Hspec
import Test.QuickCheck
import Control.Exception (evaluate)
import Control.Monad
import Data.Graph.Generators.Classic
import Data.Graph.Generators.Simple
import Data.Graph.Generators.Random.ErdosRenyi
import Data.Graph.Generators.Random.BarabasiAlbert
import Data.Graph.Generators
import Data.Map (Map)
import Data.Maybe (fromJust)
import Data.List (sort)
import qualified Data.Map as Map
main :: IO ()
main = hspec $ do
describe "Classic graphs" $ do
it "should pass the integity check" $ do
trivialGraph `shouldSatisfy` checkGraphInfo
bullGraph `shouldSatisfy` checkGraphInfo
chvatalGraph `shouldSatisfy` checkGraphInfo
cubicalGraph `shouldSatisfy` checkGraphInfo
desarguesGraph `shouldSatisfy` checkGraphInfo
diamondGraph `shouldSatisfy` checkGraphInfo
dodecahedralGraph `shouldSatisfy` checkGraphInfo
fruchtGraph `shouldSatisfy` checkGraphInfo
heawoodGraph `shouldSatisfy` checkGraphInfo
houseGraph `shouldSatisfy` checkGraphInfo
houseXGraph `shouldSatisfy` checkGraphInfo
icosahedralGraph `shouldSatisfy` checkGraphInfo
krackhardtKiteGraph `shouldSatisfy` checkGraphInfo
moebiusKantorGraph `shouldSatisfy` checkGraphInfo
octahedralGraph `shouldSatisfy` checkGraphInfo
pappusGraph `shouldSatisfy` checkGraphInfo
petersenGraph `shouldSatisfy` checkGraphInfo
sedgewickMazeGraph `shouldSatisfy` checkGraphInfo
tetrahedralGraph `shouldSatisfy` checkGraphInfo
truncatedCubeGraph `shouldSatisfy` checkGraphInfo
truncatedTetrahedronGraph `shouldSatisfy` checkGraphInfo
tutteGraph `shouldSatisfy` checkGraphInfo
describe "Simple graphs" $ do
it "should pass the integrity checks" $ do
forM_ [0..10] $ \n ->
completeGraph n `shouldSatisfy` checkGraphInfo
describe "Erdös Renyi random graphs" $ do
it "should pass the integrity checks" $ do
forM_ [0..20] $ \n -> do
gr <- erdosRenyiGraph' n 0.1
completeGraph n `shouldSatisfy` checkGraphInfo
describe "Barabasi Albert random graphs" $ do
it "should pass the integrity checks" $ do
forM_ [10..20] $ \n -> do
gr <- barabasiAlbertGraph' n 5
completeGraph n `shouldSatisfy` checkGraphInfo