HaskellForMaths-0.3.3: Math/Test/TCombinatorics/TPoset.hs
-- Copyright (c) 2011, David Amos. All rights reserved.
module Math.Test.TCombinatorics.TPoset where
import Test.HUnit
import Math.Combinatorics.Digraph
import Math.Combinatorics.Poset
testlistPoset = TestList [
testlistIsOrderIsoPositive,
testlistIsOrderIsoNegative,
testlistHasseDigraph
]
testcaseIsOrderIsoPositive desc p1 p2 = TestCase (assertBool desc (isOrderIso p1 p2))
testlistIsOrderIsoPositive = TestList [
testcaseIsOrderIsoPositive "D 30 ~= D 42" (posetD 30) (posetD 42),
testcaseIsOrderIsoPositive "D 60 ~= D 90" (posetD 30) (posetD 42),
testcaseIsOrderIsoPositive "D 30 ~= B 3" (posetD 30) (posetB 3),
testcaseIsOrderIsoPositive "B 2 ~= 2 * 2" (posetB 2) (dprod (chainN 2) (chainN 2))
]
testcaseIsOrderIsoNegative desc p1 p2 = TestCase (assertBool desc (not (isOrderIso p1 p2)))
testlistIsOrderIsoNegative = TestList [
testcaseIsOrderIsoNegative "D 20 ~/= D 30" (posetD 20) (posetD 30)
]
testcaseHasseDigraph desc poset = TestCase $ assertEqual desc poset (reachabilityPoset $ hasseDigraph poset)
testlistHasseDigraph = TestList [
testcaseHasseDigraph "chain 3" (chainN 3),
testcaseHasseDigraph "antichain 3" (antichainN 3),
testcaseHasseDigraph "posetB 3" (posetB 3),
testcaseHasseDigraph "posetB 4" (posetB 4)
]