{- How to use: runghc testBasic.hs -} {-# language GHC2021 #-} import Basic (MadInteger(..), double) import Basic qualified import TestLib -- Re-assert desired type. split :: [a] -> ([a], [a]) split = Basic.split testSplit = Group [ "split even" ~: split [3,1,2,9] ~?= ([3,2], [1,9]) , "split odd" ~: split [3,1,2,9,7] ~?= ([3,2,7], [1,9]) , "split singleton" ~: split [3] ~?= ([3], []) ] -- Re-assert desired type. merge :: [Integer] -> [Integer] -> [Integer] merge = Basic.merge testMerge = Group [ "merge" ~: merge [2, 3, 5] [1, 3, 4, 4, 7] ~?= [1, 2, 3, 3, 4, 4, 5, 7] ] -- Re-assert desired type. mergeSort :: ([Integer] -> ([Integer], [Integer])) -> ([Integer] -> [Integer] -> [Integer]) -> [Integer] -> [Integer] mergeSort = Basic.mergeSort testMergeSort = Group [ "mergeSort" ~: mergeSort Basic.split Basic.merge [13,17,18,20,15,13,14,15,19,20] ~?= [13,13,14,15,15,17,18,19,20,20] ] testMadDouble = Group [ "mad double D1" ~: double (D1 3) ~?= D1 6 , "mad double D2" ~: double (D2 3 (-4)) ~?= D2 6 (-8) , "mad double inf" ~: double Infinity ~?= Infinity ] tests = [testSplit, testMerge, testMergeSort, testMadDouble] main = testlibMain tests