packages feed

cmt-0.7.1.0: test/Cmt/Parser/ArgumentsTest.hs

{-# LANGUAGE OverloadedLists #-}

module Cmt.Parser.ArgumentsTest where

import ClassyPrelude

import Test.Tasty
import Test.Tasty.HUnit

import Cmt.Parser.Arguments (parse)
import Cmt.Types.App        (Settings (Settings), defaultSettings)
import Cmt.Types.Next       (Next (..))

test_config :: TestTree
test_config =
    testGroup
        "Cmt.Parser.Arguments"
        [ testGroup
              "single arguments"
              [ testCase
                    "help"
                    (assertEqual "Gives back Help" (Right (defaultSettings, Help)) (parse "-h"))
              , testCase
                    "version"
                    (assertEqual
                         "Gives back Version"
                         (Right (defaultSettings, Version))
                         (parse "-v"))
              , testCase
                    "config location"
                    (assertEqual
                         "Gives back ConfigLocation"
                         (Right (defaultSettings, ConfigLocation))
                         (parse "-c"))
              , testCase
                    "previous"
                    (assertEqual
                         "Gives back Previous"
                         (Right (defaultSettings, Previous))
                         (parse "--prev"))
              ]
        , testGroup
              "PreDefined"
              [ testCase
                    "predefined message"
                    (assertEqual
                         "Gives back PreDefined and name"
                         (Right (defaultSettings, PreDefined "test" []))
                         (parse "-p test"))
              , testCase
                    "predefined message plus message"
                    (assertEqual
                         "Gives back PreDefined, name and message"
                         (Right (defaultSettings, PreDefined "test" [("*", "a message")]))
                         (parse "-p test a message"))
              ]
        , testGroup
              "Continue"
              [ testCase
                    "continue"
                    (assertEqual
                         "Gives back empty Continue"
                         (Right (defaultSettings, Continue []))
                         (parse ""))
              , testCase
                    "continue"
                    (assertEqual
                         "Gives back Continue with message"
                         (Right (defaultSettings, Continue [("*", "a message")]))
                         (parse "a message"))
              ]
        , testGroup
              "Settings"
              [ testCase
                    "previous dryn run"
                    (assertEqual
                         "Gives back Previous"
                         (Right (Settings True True, Previous))
                         (parse "--dry-run --prev"))
              , testCase
                    "predefined message plus message"
                    (assertEqual
                         "Gives back PreDefined, name and message"
                         (Right (Settings True True, PreDefined "test" [("*", "a message")]))
                         (parse "--dry-run -p test a message"))
              , testCase
                    "continue"
                    (assertEqual
                         "Gives back Continue with message"
                         (Right (Settings True True, Continue [("*", "a message")]))
                         (parse "--dry-run a message"))
              , testCase
                    "predefined message plus message - no colours"
                    (assertEqual
                         "Gives back PreDefined, name and message"
                         (Right (Settings False False, PreDefined "test" [("*", "a message")]))
                         (parse "--no-color -p test a message"))
              ]
        ]