{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module Unit (main) where
import NaturalSort
import qualified Data.ByteString.Char8 as B
unit1 = (["z10.txt"
,"z100.txt"
,"z400.txt"
,"z72.txt"
,"z71.txt"
,"z20.txt"
,"z1.txt"],
["z1.txt"
,"z10.txt"
,"z20.txt"
,"z71.txt"
,"z72.txt"
,"z100.txt"
,"z400.txt"])
unit2 = (["a10.txt"
,"a2.txt"
,"a1.txt"
,"a20.txt"
,"a2.txt"
,"a700.txt"],
["a1.txt"
,"a2.txt"
,"a2.txt"
,"a10.txt"
,"a20.txt"
,"a700.txt"])
unit3 = (["12 Geese a' Quackin'"
,"10 Monkeys a' Writin'"
,"1 Fish a' Flappin'"
,"And a Dwarf in a Pear Tree-e"],
["1 Fish a' Flappin'"
,"10 Monkeys a' Writin'"
,"12 Geese a' Quackin'"
,"And a Dwarf in a Pear Tree-e"])
unit4 = (["1c"
,"1a"
,"1b"],
["1a"
,"1b"
,"1c"])
test :: ([String], [String]) -> Bool
test (inp, out) = natSort inp' == out'
where
inp' = map B.pack inp
out' = map B.pack out
runTests :: [(String, ([String], [String]))] -> IO ()
runTests = mapM_ (\(n, s) -> putStr (n ++ ": ") >>
putStrLn (if test s then "OK" else "FALSE"))
main = runTests [("unit1", unit1)
,("unit2", unit2)
,("unit3", unit3)
,("unit4", unit4)]