packages feed

taskell-1.9.3.0: test/Taskell/IO/Keyboard/TypesTest.hs

module Taskell.IO.Keyboard.TypesTest
    ( test_types
    ) where

import ClassyPrelude

import Test.Tasty
import Test.Tasty.HUnit

import qualified Taskell.Events.Actions.Types as A (ActionType (..))
import           Taskell.IO.Keyboard          (addMissing, badMapping, defaultBindings)
import           Taskell.IO.Keyboard.Types    (Binding (..), Bindings)

notFull :: Bindings
notFull = [(BChar 'œ', A.Quit), (BChar 'U', A.Undo)]

notFullResult :: Bindings
notFullResult = notFull <> (drop 2 defaultBindings)

bad :: Bindings
bad = [(BChar 'q', A.Quit), (BChar 'u', A.Nothing), (BChar '>', A.Nothing), (BChar '<', A.ListLeft)]

-- tests
test_types :: TestTree
test_types =
    testGroup
        "Events.Actions.Types"
        [ testCase
              "not missing"
              (assertEqual "Finds no missing items" defaultBindings (addMissing defaultBindings))
        , testCase
              "not missing"
              (assertEqual "Finds missing items" notFullResult (addMissing notFull))
        , testCase
              "bad mapping"
              (assertEqual "Finds bad mapping" (Left "invalid mapping") (badMapping bad))
        ]