module Main where import Test.Tasty import Test.Tasty.HUnit import qualified Data.LinkedHashMap.Seq as LM1 import qualified Data.LinkedHashMap.IntMap as LM2 test0_1 = LM1.fromList [(1 :: Int,"A"), (5, "B"), (7, "C"), (-6, "C")] test0_2 = LM2.fromList [(1 :: Int,"A"), (5, "B"), (7, "C"), (-6, "C")] test1_1 = LM1.insert 3 "ZZ" test0_1 test1_2 = LM2.insert 3 "ZZ" test0_2 test2_1 = LM1.insert (-10) "AA" $ LM1.insert 3 "ZZ" test0_1 test2_2 = LM2.insert (-10) "AA" $ LM2.insert 3 "ZZ" test0_2 test3_1 = LM1.delete 5 $ LM1.insert (-10) "AA" $ LM1.insert 3 "ZZ" test0_1 test3_2 = LM2.delete 5 $ LM2.insert (-10) "AA" $ LM2.insert 3 "ZZ" test0_2 test4_1 = LM1.delete 3 $ LM1.delete 5 $ LM1.insert (-10) "AA" $ LM1.insert 3 "ZZ" test0_1 test4_2 = LM2.delete 3 $ LM2.delete 5 $ LM2.insert (-10) "AA" $ LM2.insert 3 "ZZ" test0_2 test5_1 = LM1.delete 3 $ LM1.insert 3 "AA" $ LM1.insert 3 "ZZ" test0_1 test5_2 = LM2.delete 3 $ LM2.insert 3 "AA" $ LM2.insert 3 "ZZ" test0_2 test6_1 = LM1.fromList [(1 :: Int,"A"), (5, "B"), (7, "C"), (-6, "D"), (1 :: Int,"AAAAA")] test6_2 = LM2.fromList [(1 :: Int,"A"), (5, "B"), (7, "C"), (-6, "D"), (1 :: Int,"AAAAA")] test7_1 = LM1.fromList [(1 :: Int,"A"), (5, "B"), (7, "C"), (-6, "D"), (1,"AA"), (5,"BB"), (7,"CC"),(7,"CCC")] test7_2 = LM2.fromList [(1 :: Int,"A"), (5, "B"), (7, "C"), (-6, "D"), (1,"AA"), (5,"BB"), (7,"CC"),(7,"CCC")] test8_1 = LM1.fromList [(1 :: Int,"A"), (1, "B"), (1, "C"), (1, "D")] test8_2 = LM2.fromList [(1 :: Int,"A"), (1, "B"), (1, "C"), (1, "D")] test9_1 = LM1.fromList ([] :: [(Int, String)]) test9_2 = LM2.fromList ([] :: [(Int, String)]) unitTests :: TestTree unitTests = testGroup "Unit tests" [ testCase "test0" $ LM1.toList test0_1 @?= LM2.toList test0_2, testCase "test1" $ LM1.toList test1_1 @?= LM2.toList test1_2, testCase "test2" $ LM1.toList test2_1 @?= LM2.toList test2_2, testCase "test3" $ LM1.toList test3_1 @?= LM2.toList test3_2, testCase "test4" $ LM1.toList test4_1 @?= LM2.toList test4_2, testCase "test5" $ LM1.toList test5_1 @?= LM2.toList test5_2, testCase "test6" $ LM1.toList test6_1 @?= LM2.toList test6_2, testCase "test7" $ LM1.toList test7_1 @?= LM2.toList test7_2, testCase "test7_2" $ LM1.toList test7_1 @?= [(1,"AA"),(5,"BB"),(7,"CCC"),(-6,"D")], testCase "test8" $ LM1.toList test8_1 @?= LM2.toList test8_2, testCase "test8_2" $ LM1.toList test8_1 @?= [(1::Int, "D")], testCase "test9" $ LM1.toList test9_1 @?= LM2.toList test9_2 ] main :: IO () main = defaultMain unitTests