packages feed

NaturalSort-0.2.1: tests/Unit.hs

{-# 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)]