taskell-1.5.0.0: test/IO/KeyboardTest.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedLists #-}
module IO.KeyboardTest
( test_keyboard
) where
import ClassyPrelude
import Test.Tasty
import Test.Tasty.HUnit
import Control.Lens ((.~))
import Data.Taskell.Lists.Internal (initial)
import Events.Actions.Types as A
import Events.State (create, quit)
import Events.State.Types (State, Stateful, mode)
import Events.State.Types.Mode (Mode (Shutdown))
import Graphics.Vty.Input.Events (Event (..), Key (..))
import IO.Keyboard (generate)
import IO.Keyboard.Types
tester :: BoundActions -> Event -> Stateful
tester actions ev state = lookup ev actions >>= ($ state)
cleanState :: State
cleanState = create "taskell.md" initial
basicBindings :: Bindings
basicBindings = [(BChar 'q', A.Quit)]
basicActions :: Actions
basicActions = [(A.Quit, quit)]
basicResult :: Maybe State
basicResult = Just $ (mode .~ Shutdown) cleanState
test_keyboard :: TestTree
test_keyboard =
testGroup
"IO.Keyboard"
[ testCase
"generate"
(assertEqual
"Parses basic"
basicResult
(tester (generate basicBindings basicActions) (EvKey (KChar 'q') []) cleanState))
]