-- :set -P{Hugs}/lib:{Hugs}/lib/hugs:{Hugs}/lib/exts:/u/jsiek/HUnit-1.0 module Main where import Queue import PropertyMap import HUnit ----------------------------------------------------------- -- Test the UpdateableHeap priority queue implementation -- map items to priorities pmap = create_map [(0::Int,22::Int), (1,15), (2, 21)] 0 q1 = make_heap pmap test1 = TestCase (assertBool "(is_empty q1)" (is_empty q1)) q2 = (push 0 q1) test2 = TestCase (assertEqual "(front q1) 0" (front q2) 0) test2a = TestCase (assertBool "not (is_empty q2)" (not (is_empty q2))) q3 = push 2 (push 1 q1) test3 = TestCase (assertEqual "(front q3) 1" (front q3) 1) test4 = TestCase (assertEqual "(front (pop q3)) 2" (front (pop q3)) 2) -- change priority for item 0 pmap2 = put pmap (0::Int) (11::Int) -- update the priority queue q4 = update pmap2 (0::Int) q3 test5 = TestCase (assertEqual "(front q4) 0" (front q4) 0) test6 = TestCase (assertEqual "(front (pop q4)) 1" (front (pop q4)) 1) ----------------------------------------------------------- -- Test the Seq implementation of Queue, should be FIFO s1 = empty::Seq Int test7 = TestCase (assertBool "(is_empty s1)" (is_empty s1)) s2 = push 1 s1 test8 = TestCase (assertBool "(is_empty (pop s2))" (is_empty (pop s2))) test9 = TestCase (assertEqual "1 (front s2)" 1 (front s2)) s3 = push 3 (push 2 s2) test10 = TestCase (assertEqual "1 (front s3)" 1 (front s2)) s4 = pop s3 test11 = TestCase (assertEqual "2 (front s4)" 2 (front s4)) s5 = pop s4 test12 = TestCase (assertEqual "(front s5) 3" 3 (front s5)) tests = TestList [TestLabel "test1" test1, TestLabel "test2" test2, TestLabel "test2a" test2a, TestLabel "test3" test3, TestLabel "test4" test4, TestLabel "test5" test5, TestLabel "test6" test6, TestLabel "test7" test7, TestLabel "test8" test8, TestLabel "test9" test9, TestLabel "test10" test10, TestLabel "test11" test11, TestLabel "test12" test12 ] main = do runTestTT tests