-- Testing/Tree.hs module Testing.Unit.TreeTests (tests, t1, t1a, t2a, t2b, t2c, t2d, t2e, t3, t4, runU) where import Test.HUnit import Data.Sifflet.Tree as T import Testing.TestUtil -- Test data t1 :: Tree Name t1 = leaf (Name "cat") -- Equiv: t1a :: Tree Name t1a = nameTree (leaf "cat") t2a :: Tree Name t2a = nameTree (T.Node "cat" [leaf "doormat"]) t2b :: Tree Name t2b = nameTree (T.Node "doormat" [leaf "cat"]) t2c :: Tree Name t2c = nameTree (T.Node "floor" [leaf "mat", leaf "textile"]) t2d :: Tree Name t2d = nameTree (T.Node "X" [leaf "seven", leaf "twelve"]) t2e :: Tree Name t2e = nameTree (T.Node "Seven" [leaf "7", leaf "77"]) t3 :: Tree Int t3 = tree 12 [tree 6 [tree 3 [leaf 0, leaf 2, leaf 4], leaf 5], leaf 9, tree 24 [tree 18 [leaf 19, leaf 21]]] t4 :: Tree Name t4 = nameTree (tree "batty" [tree "fa" [leaf "zen", leaf "bud", leaf "rose"], tree "solfeggio" [leaf "apricot", leaf "pear"], leaf "humble", leaf "apple-pie"]) -- Specific tests for the Tree module tests :: Test tests = assertAll [-- testing isLeaf assertEqual "cat is leaf" True (isLeaf t1), assertEqual "cat is not leaf" False (isLeaf t2a), -- testing treeDepth assertEqual "depth of t1" 1 (treeDepth t1), assertEqual "depth of t2d" 2 (treeDepth t2d), assertEqual "depth of t3" 4 (treeDepth t3), assertEqual "depth of t4" 3 (treeDepth t4), -- testing treeSize assertEqual "size of t1" 1 (treeSize t1), assertEqual "size of t1" 3 (treeSize t2c), assertEqual "size of t1" 12 (treeSize t3), assertEqual "size of t1" 10 (treeSize t4)] runU :: IO () runU = utestloop tests