about summary refs log tree commit diff
path: root/test/Xanthous/Util/GraphSpec.hs
blob: 35ff090b28b9c40443e47ad3f24b8cd30490e6d3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
module Xanthous.Util.GraphSpec (main, test) where
--------------------------------------------------------------------------------
import Test.Prelude
--------------------------------------------------------------------------------
import Xanthous.Util.Graph
import Data.Graph.Inductive.Basic
import Data.Graph.Inductive.Graph (labNodes, size, order)
import Data.Graph.Inductive.PatriciaTree
import Data.Graph.Inductive.Arbitrary
--------------------------------------------------------------------------------

main :: IO ()
main = defaultMain test

test :: TestTree
test = testGroup "Xanthous.Util.Graph"
  [ testGroup "mstSubGraph"
    [ testProperty "always produces a subgraph"
        $ \(CG _ (graph :: Gr Int Int)) ->
          let msg = mstSubGraph $ undir graph
          in counterexample (show msg)
            $ msg `isSubGraphOf` undir graph
    , testProperty "returns a graph with the same nodes"
        $ \(CG _ (graph :: Gr Int Int)) ->
          let msg = mstSubGraph graph
          in counterexample (show msg)
            $ labNodes msg === labNodes graph
    , testProperty "has nodes - 1 edges"
        $ \(CG _ (graph :: Gr Int Int)) ->
          order graph > 1 ==>
          let msg = mstSubGraph graph
          in counterexample (show msg)
            $ size msg === order graph - 1
    , testProperty "always produces a simple graph"
        $ \(CG _ (graph :: Gr Int Int)) ->
          let msg = mstSubGraph graph
          in counterexample (show msg) $ isSimple msg
    ]
  ]