sifflet-2.3.0: tests/Testing/Unit/TreeTests.hs
-- 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