twitch-0.1.7.0: tests/Tests/Twitch/Main.hs
{-# LANGUAGE OverloadedStrings #-}
module Tests.Twitch.Main where
import Test.Hspec
import Options.Applicative.Extra
import Data.Monoid
import Twitch.Main
import Options.Applicative.Builder
import Prelude hiding (log)
runParser :: [String] -> Maybe Options
runParser xs = getParseResult $ execParserPure (prefs mempty) opts xs
-- testParser :: String ->
testParser f initial expected
= fmap f (runParser [initial]) `shouldBe` Just expected
testParserMulti f xs expected
= fmap f (runParser xs) `shouldBe` Just expected
tests :: Spec
tests = do
describe "Command Line Parser" $ do
it "parses the log option" $ do
-- long
testParser log "--log=LogToStdout" LogToStdout
testParser log "--log=LogToFile" LogToFile
testParser log "--log=NoLogger" NoLogger
-- short
testParser log "-lLogToStdout" LogToStdout
testParser log "-lLogToFile" LogToFile
testParser log "-lNoLogger" NoLogger
it "parses the log-file option (long)" $
testParser logFile "--log-file=./log.txt" $ Just "./log.txt"
it "parses the log-file option (short)" $
testParser logFile "-f./log.txt" $ Just "./log.txt"
it "parses the root option" $ do
testParser root "--root=./src" $ Just "./src"
testParser root "-r./src" $ Just "./src"
it "parses the recurse option" $ do
testParser recurseThroughDirectories "--no-recurse" False
testParser recurseThroughDirectories "-n" False
it "parses the debounce option" $ do
testParser debounce "--debounce=DebounceDefault" DebounceDefault
testParser debounce "--debounce=Debounce" Debounce
testParser debounce "--debounce=NoDebounce" NoDebounce
testParser debounce "-bDebounceDefault" DebounceDefault
testParser debounce "-bDebounce" Debounce
testParser debounce "-bNoDebounce" NoDebounce
it "parses the debounce-amount option" $ do
testParser debounceAmount "--debounce-amount=1.0" 1.0
testParser debounceAmount "-a1.0" 1.0
it "parses the poll-interval" $ do
testParser pollInterval "--poll-interval=1" 1
testParser pollInterval "-i1" 1
it "parses the poll" $ do
testParser usePolling "--should-poll" True
testParser usePolling "-p" True