hgraph-1.2.0.0: tests/Digraph/PathAnonymity.hs
module Main where
import HGraph.Directed
import HGraph.Directed.PathAnonymity
import qualified HGraph.Directed.AdjacencyMap as AM
import qualified Data.Set as S
import Test.HUnit hiding (Node)
import System.Exit (exitFailure, exitSuccess)
v1 = 1 :: Int
tests = TestList
[ TestLabel "Path anonymity 0" $ TestCase
( do
let d = addVertex v1 AM.emptyDigraph
k = pathAnonymity d
assertEqual "Anonymity"
0
k
)
, TestLabel "Path anonymity 1-0" $ TestCase
( do
let d = foldr addArc (foldr addVertex AM.emptyDigraph [v1,2]) $ zip [1] [2]
k = pathAnonymity d
assertEqual "Anonymity"
1
k
)
, TestLabel "Path anonymity 1-1" $ TestCase
( do
let d = foldr addArc (foldr addVertex AM.emptyDigraph [0,1,2,3,4]) $ zip [0,1,2,4] [4,4,4,3]
k = pathAnonymity d
assertEqual "path anonymity"
1
(pathPathAnonymityI d [0,4,3])
assertEqual "digraph anonymity"
1
k
)
, TestLabel "Path anonymity 2-0" $ TestCase
( do
let d = foldr addArc (foldr addVertex AM.emptyDigraph [v1,2,3,4,5]) $ zip [1,2,3,3] [3,3,4,5]
k = pathAnonymity d
assertEqual "Anonymity"
2
k
)
, TestLabel "Path anonymity 2-1" $ TestCase
( do
let d = foldr addArc (foldr addVertex AM.emptyDigraph [0,1,2]) $ zip [0,0,1,1] [1,2,0,2]
k = pathAnonymity d
assertEqual "path anonymity"
2
(pathPathAnonymityI d [0,1,0])
assertEqual "digraph anonymity"
2
k
)
, TestLabel "Path anonymity 4-1" $ TestCase
( do
let d = foldr addArc (foldr addVertex AM.emptyDigraph [v1,2,3,4,5]) $ [(v,u) | v <- [1..5], u <- [1..5], v /= u]
k = pathAnonymity d
assertEqual "path anonymity"
2
(pathPathAnonymityI d [1,2,1])
assertEqual "path anonymity"
3
(pathPathAnonymityI d [1,2,3,1])
assertEqual "digraph anonymity"
4
k
)
, TestLabel "Path anonymity 5-0" $ TestCase
( do
let d = foldr addArc (foldr addVertex AM.emptyDigraph [v1,2,3,4,5,6]) $ [(v,u) | v <- [1..6], u <- [1..6], v /= u]
k = pathAnonymity d
assertEqual "path anonymity"
5
(pathPathAnonymityI d [1,2,3,4,5,1])
assertEqual "digraph anonymity"
5
k
)
]
arcSet p = S.fromList $ zip p $ tail p
main = do
count <- runTestTT tests
if errors count + failures count > 0 then exitFailure else exitSuccess