Change-Id: I62ac54543da5c855c86d39956e611fd44515e9a9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5443 Autosubmit: grfn <grfn@gws.fyi> Reviewed-by: grfn <grfn@gws.fyi> Tested-by: BuildkiteCI
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
--------------------------------------------------------------------------------
 | 
						|
module Xanthous.CommandSpec (main, test) where
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
import           Test.Prelude
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
import           Xanthous.Command
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
import           Data.Aeson (fromJSON, Value(String))
 | 
						|
import qualified Data.Aeson as A
 | 
						|
import           Graphics.Vty.Input (Key(..), Modifier(..))
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
 | 
						|
main :: IO ()
 | 
						|
main = defaultMain test
 | 
						|
 | 
						|
test :: TestTree
 | 
						|
test = testGroup "Xanthous.CommandSpec"
 | 
						|
  [ testGroup "keybindings"
 | 
						|
    [ testCase "all are valid" $ keybindings `deepseq` pure ()
 | 
						|
    , testProperty "all non-move commands are bound" $ \cmd ->
 | 
						|
        let isn'tMove = case cmd of
 | 
						|
                          Move _ -> False
 | 
						|
                          StartAutoMove _ -> False
 | 
						|
                          _ -> True
 | 
						|
        in isn'tMove ==> member cmd commands
 | 
						|
    ]
 | 
						|
  , testGroup "instance FromJSON Keybinding" $
 | 
						|
    [ ("q", Keybinding (KChar 'q') [])
 | 
						|
    , ("<up>", Keybinding KUp [])
 | 
						|
    , ("<left>", Keybinding KLeft [])
 | 
						|
    , ("<right>", Keybinding KRight [])
 | 
						|
    , ("<down>", Keybinding KDown [])
 | 
						|
    , ("S-q", Keybinding (KChar 'q') [MShift])
 | 
						|
    , ("C-S-q", Keybinding (KChar 'q') [MCtrl, MShift])
 | 
						|
    , ("m-<UP>", Keybinding KUp [MMeta])
 | 
						|
    , ("S", Keybinding (KChar 'S') [])
 | 
						|
    ] <&> \(s, kb) ->
 | 
						|
      testCase (fromString $ unpack s <> " -> " <> show kb)
 | 
						|
       $ fromJSON (String s) @?= A.Success kb
 | 
						|
  ]
 |