monomer-1.0.0.0: test/unit/Monomer/TestEventUtil.hs
{-|
Module : Monomer.TestEventUtil
Copyright : (c) 2018 Francisco Vallarino
License : BSD-3-Clause (see the LICENSE file)
Maintainer : fjvallarino@gmail.com
Stability : experimental
Portability : non-portable
Helper functions for creating events in unit tests.
-}
module Monomer.TestEventUtil where
import Control.Lens ((&), (^.), (.~))
import Data.Default
import Data.Text (Text)
import Monomer.Core
import Monomer.Event
import qualified Monomer.Lens as L
-- Tests were written assuming Mac OS is the host
-- For Mac OS, Meta acts as Windows' Ctrl (and viceversa) on text movement/selection
modA :: KeyMod
modA = def
& L.leftAlt .~ True
modC :: KeyMod
modC = def
& L.leftCtrl .~ True
modG :: KeyMod
modG = def
& L.leftGUI .~ True
modS :: KeyMod
modS = def & L.leftShift .~ True
modAS :: KeyMod
modAS = def
& L.leftAlt .~ True
& L.leftShift .~ True
modCS :: KeyMod
modCS = def
& L.leftCtrl .~ True
& L.leftShift .~ True
modGS :: KeyMod
modGS = def
& L.leftGUI .~ True
& L.leftShift .~ True
evtFocus :: SystemEvent
evtFocus = Focus emptyPath
evtBlur :: SystemEvent
evtBlur = Blur emptyPath
evtClick :: Point -> SystemEvent
evtClick p = Click p BtnLeft 1
evtDblClick :: Point -> SystemEvent
evtDblClick p = Click p BtnLeft 2
evtPress :: Point -> SystemEvent
evtPress p = ButtonAction p BtnLeft BtnPressed 1
evtRelease :: Point -> SystemEvent
evtRelease p = ButtonAction p BtnLeft BtnReleased 1
evtMove :: Point -> SystemEvent
evtMove p = Move p
evtDrag :: Point -> Point -> [SystemEvent]
evtDrag start end = [evtPress start, evtMove end, evtRelease end]
evtK :: KeyCode -> SystemEvent
evtK k = KeyAction def k KeyPressed
evtKA :: KeyCode -> SystemEvent
evtKA k = KeyAction modA k KeyPressed
evtKC :: KeyCode -> SystemEvent
evtKC k = KeyAction modC k KeyPressed
evtKG :: KeyCode -> SystemEvent
evtKG k = KeyAction modG k KeyPressed
evtKS :: KeyCode -> SystemEvent
evtKS k = KeyAction modS k KeyPressed
evtKAS :: KeyCode -> SystemEvent
evtKAS k = KeyAction modAS k KeyPressed
evtKCS :: KeyCode -> SystemEvent
evtKCS k = KeyAction modCS k KeyPressed
evtKGS :: KeyCode -> SystemEvent
evtKGS k = KeyAction modGS k KeyPressed
evtRK :: KeyCode -> SystemEvent
evtRK k = KeyAction def k KeyReleased
evtRKA :: KeyCode -> SystemEvent
evtRKA k = KeyAction modA k KeyReleased
evtRKC :: KeyCode -> SystemEvent
evtRKC k = KeyAction modC k KeyReleased
evtRKG :: KeyCode -> SystemEvent
evtRKG k = KeyAction modG k KeyReleased
evtRKS :: KeyCode -> SystemEvent
evtRKS k = KeyAction modS k KeyReleased
evtRKAS :: KeyCode -> SystemEvent
evtRKAS k = KeyAction modAS k KeyReleased
evtRKCS :: KeyCode -> SystemEvent
evtRKCS k = KeyAction modCS k KeyReleased
evtRKGS :: KeyCode -> SystemEvent
evtRKGS k = KeyAction modGS k KeyReleased
evtT :: Text -> SystemEvent
evtT t = TextInput t
moveCharL :: SystemEvent
moveCharL = evtK keyLeft
moveCharR :: SystemEvent
moveCharR = evtK keyRight
moveWordL :: SystemEvent
moveWordL = evtKA keyLeft
moveWordR :: SystemEvent
moveWordR = evtKA keyRight
moveLineL :: SystemEvent
moveLineL = evtKC keyLeft
moveLineR :: SystemEvent
moveLineR = evtKC keyRight
selCharL :: SystemEvent
selCharL = evtKS keyLeft
selCharR :: SystemEvent
selCharR = evtKS keyRight
selWordL :: SystemEvent
selWordL = evtKAS keyLeft
selWordR :: SystemEvent
selWordR = evtKAS keyRight
selLineL :: SystemEvent
selLineL = evtKCS keyLeft
selLineR :: SystemEvent
selLineR = evtKCS keyRight
delCharL :: SystemEvent
delCharL = evtK keyBackspace
delWordL :: SystemEvent
delWordL = evtKA keyBackspace