packages feed

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

{-# LANGUAGE OverloadedLists #-}

module Cmt.Parser.ArgumentsTest where

import Test.Tasty
import Test.Tasty.HUnit

import Cmt.Parser.Arguments (parse)
import Cmt.Types.Next       (Next (..))

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