graphite-0.4.0.0: test/Data/Graph/DGraphSpec.hs
module Data.Graph.DGraphSpec where
import Test.Hspec
import Test.QuickCheck
import Data.Graph.DGraph
import Data.Graph.Types
spec :: Spec
spec = do
describe "Directed Graph (DGraph)" $ do
it "Can tell if a vertex exists" $ property $ do
let g = insertVertex empty 1 :: DGraph Int ()
let g' = insertVertex empty 2 :: DGraph Int ()
containsVertex g 1 `shouldBe` True
containsVertex g' 1 `shouldBe` False
it "Can tell if an arc exists" $ property $ do
let g = insertArc empty (1 --> 2) :: DGraph Int ()
let g' = insertArc empty (2 --> 1) :: DGraph Int ()
containsArc g (1 --> 2) `shouldBe` True
containsArc g' (1 --> 2) `shouldBe` False
it "Increments its order when a new vertex is inserted" $ property $
\g v -> (not $ g `containsVertex` v)
==> order g + 1 == order (insertVertex (g :: DGraph Int ()) v)
it "Increments its size when a new arc is inserted" $ property $
\g arc -> (not $ g `containsArc` arc)
==> size g + 1 == size (insertArc (g :: DGraph Int ()) arc)
it "Is id when inserting and removing a new vertex" $ property $
\g v -> (not $ g `containsVertex` v)
==> (removeVertex v $ insertVertex g v)
== (g :: DGraph Int ())