packages feed

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