TheRealSamuel/LeetCodeProblem
0564
1 2module Main where3import Test.HUnit4 5--Program start6 7--Program end8 9-- Test cases10 11test1 :: Test12test1 = TestCase (assertEqual "for (minOperations [3,1,5,4,2] 2)," 4 (minOperations [3,1,5,4,2] 2))13 14test2 :: Test15test2 = TestCase (assertEqual "for (minOperations [3,1,5,4,2] 5)," 5 (minOperations [3,1,5,4,2] 5))16 17test3 :: Test18test3 = TestCase (assertEqual "for (minOperations [3,2,5,3,1] 3)," 4 (minOperations [3,2,5,3,1] 3))19 20test4 :: Test21test4 = TestCase (assertEqual "for (minOperations [30, 46, 42, 50, 21, 14, 37, 43, 11, 5, 13, 10, 33, 6, 8, 44, 23, 47, 48, 45, 17, 27, 12, 34, 38, 28, 49, 9, 25, 19, 7, 1, 22, 15, 4, 41, 40, 35, 36, 31, 20, 16, 18, 3, 32, 24, 29, 39, 2, 26] 11)," 42 (minOperations [30, 46, 42, 50, 21, 14, 37, 43, 11, 5, 13, 10, 33, 6, 8, 44, 23, 47, 48, 45, 17, 27, 12, 34, 38, 28, 49, 9, 25, 19, 7, 1, 22, 15, 4, 41, 40, 35, 36, 31, 20, 16, 18, 3, 32, 24, 29, 39, 2, 26] 11))22 23test5 :: Test24test5 = TestCase (assertEqual "for (minOperations [10, 14, 17, 23, 36, 7, 11, 13, 6, 15, 26, 20, 4, 16, 31, 30, 12, 21, 5, 34, 19, 2, 18, 9, 29, 37, 1, 8, 38, 25, 32, 22, 33, 3, 28, 24, 35, 27] 13)," 38 (minOperations [10, 14, 17, 23, 36, 7, 11, 13, 6, 15, 26, 20, 4, 16, 31, 30, 12, 21, 5, 34, 19, 2, 18, 9, 29, 37, 1, 8, 38, 25, 32, 22, 33, 3, 28, 24, 35, 27] 13))25 26test6 :: Test27test6 = TestCase (assertEqual "for (minOperations [1, 7, 6, 3, 5, 2, 4] 4)," 7 (minOperations [1, 7, 6, 3, 5, 2, 4] 4))28 29test7 :: Test30test7 = TestCase (assertEqual "for (minOperations [41, 30, 32, 25, 7, 15, 14, 17, 39, 24, 23, 12, 6, 29, 8, 40, 36, 35, 34, 11, 21, 26, 33, 1, 5, 20, 9, 4, 27, 13, 10, 31, 22, 37, 3, 28, 19, 16, 2, 18, 38] 20)," 37 (minOperations [41, 30, 32, 25, 7, 15, 14, 17, 39, 24, 23, 12, 6, 29, 8, 40, 36, 35, 34, 11, 21, 26, 33, 1, 5, 20, 9, 4, 27, 13, 10, 31, 22, 37, 3, 28, 19, 16, 2, 18, 38] 20))31 32test8 :: Test33test8 = TestCase (assertEqual "for (minOperations [31, 22, 29, 17, 34, 32, 1, 10, 8, 35, 18, 6, 20, 23, 27, 19, 30, 13, 28, 5, 9, 12, 39, 21, 11, 14, 16, 40, 38, 33, 15, 25, 7, 36, 2, 24, 37, 4, 3, 26] 25)," 39 (minOperations [31, 22, 29, 17, 34, 32, 1, 10, 8, 35, 18, 6, 20, 23, 27, 19, 30, 13, 28, 5, 9, 12, 39, 21, 11, 14, 16, 40, 38, 33, 15, 25, 7, 36, 2, 24, 37, 4, 3, 26] 25))34 35test9 :: Test36test9 = TestCase (assertEqual "for (minOperations [27, 24, 33, 15, 3, 1, 37, 13, 28, 8, 4, 34, 41, 20, 18, 6, 40, 9, 30, 7, 25, 12, 11, 32, 17, 35, 29, 21, 19, 10, 31, 16, 22, 2, 23, 26, 36, 5, 39, 14, 38] 13)," 37 (minOperations [27, 24, 33, 15, 3, 1, 37, 13, 28, 8, 4, 34, 41, 20, 18, 6, 40, 9, 30, 7, 25, 12, 11, 32, 17, 35, 29, 21, 19, 10, 31, 16, 22, 2, 23, 26, 36, 5, 39, 14, 38] 13))37 38 39-- Grouping test cases40tests :: Test41tests = TestList [TestLabel "Test1" test1, TestLabel "Test2" test2, TestLabel "Test3" test3, TestLabel "Test4" test4, TestLabel "Test5" test5, TestLabel "Test6" test6, TestLabel "Test7" test7, TestLabel "Test8" test8, TestLabel "Test9" test9]42 43-- Running the tests44main :: IO Counts45main = runTestTT tests46 