module Darcs.Test.Misc.CommandLine ( commandLineTestSuite ) where import Test.HUnit ( assertEqual, assertFailure ) import Test.Framework.Providers.HUnit ( testCase ) import Test.Framework ( Test, testGroup ) import Darcs.Util.CommandLine ( parseCmd ) formatTable :: [(Char, String)] formatTable = [('s',""), ('a',""), ('d',"date") ] testParser :: (String, ([String], Bool)) -> Test testParser (s, ok) = testCase ("Parse: " ++ show s) $ case parseCmd formatTable s of Left e -> assertFailure $ "Parser failed with: " ++ show e Right res -> assertEqual ("Parsing: " ++ show s) ok res testCases :: [(String, ([String], Bool))] testCases = [("a b",(["a","b"], False)), ("a b %<",(["a","b"], True)), ("a b %< ",(["a","b"], True)), ("\"arg0 contains spaces \\\"quotes\\\"\" b", (["arg0 contains spaces \"quotes\"","b"],False)), ("a %s %<",(["a",""], True)), ("\"%d\"", (["date"], False)), ("\"d %d\"", (["d date"], False)), ("\\\a", (["\\\a"], False)), ("\"\\\a\"", (["\a"], False)), ("\"/foo:%d\"", (["/foo:date"], False)) ] commandLineTestSuite :: Test commandLineTestSuite = testGroup "Darcs.Util.CommandLine" $ map testParser testCases