aboutsummaryrefslogtreecommitdiff
path: root/specs/Specs
diff options
context:
space:
mode:
Diffstat (limited to 'specs/Specs')
-rw-r--r--specs/Specs/AppEventSpec.hs2
-rw-r--r--specs/Specs/AppStateUpdateSpec.hs31
2 files changed, 21 insertions, 12 deletions
diff --git a/specs/Specs/AppEventSpec.hs b/specs/Specs/AppEventSpec.hs
index 18e685b..3cdbe94 100644
--- a/specs/Specs/AppEventSpec.hs
+++ b/specs/Specs/AppEventSpec.hs
@@ -39,7 +39,7 @@ test = do
context "when space key is pressed" $ do
it "triggers left mouse button click" $ do
let action = eventHandler $ mkKeyboardEvent SDL.KeycodeSpace SDL.Pressed
- action `shouldBe` Just TriggerLeftClick
+ action `shouldBe` Just (TriggerMouseClick LeftClick)
context "when tab key is pressed" $ do
it "resets key state" $ do
diff --git a/specs/Specs/AppStateUpdateSpec.hs b/specs/Specs/AppStateUpdateSpec.hs
index d8502db..3f8ca47 100644
--- a/specs/Specs/AppStateUpdateSpec.hs
+++ b/specs/Specs/AppStateUpdateSpec.hs
@@ -2,6 +2,8 @@ module Specs.AppStateUpdateSpec where
import Chelleport (initialState, update)
import Chelleport.Types
+import Chelleport.Utils (uniq)
+import Control.Monad (join)
import Mock
import qualified SDL
import Test.Hspec
@@ -11,13 +13,20 @@ test = do
describe "#initialState" $ do
it "returns the initial state of the app" $ do
(initState, _) <- runWithMocks initialState
- length (stateGrid initState) `shouldBe` 9
- stateGrid initState `shouldSatisfy` all ((== 16) . length)
- stateGrid initState `shouldSatisfy` all (all ((== 2) . length))
stateKeySequence initState `shouldBe` []
stateIsMatched initState `shouldBe` False
stateIsShiftPressed initState `shouldBe` False
+ it "returns grid with 16x9 key sequences" $ do
+ (initState, _) <- runWithMocks initialState
+ length (stateGrid initState) `shouldBe` 9
+ stateGrid initState `shouldSatisfy` all ((== 16) . length)
+ stateGrid initState `shouldSatisfy` all (all ((== 2) . length))
+
+ it "returns grid with all unique key sequences" $ do
+ (initState, _) <- runWithMocks initialState
+ join (stateGrid initState) `shouldBe` uniq (join $ stateGrid initState)
+
describe "#update" $ do
let defaultState =
State
@@ -55,27 +64,27 @@ test = do
((_, action), _) <- runWithMocks $ update currentState $ HandleKeyInput SDL.KeycodeF
action `shouldBe` Just (MoveMousePosition (0, 1))
- context "with action TriggerLeftClick" $ do
+ context "with action TriggerMouseClick" $ do
let currentState = defaultState
- it "hides window and triggers left click" $ do
- (_, mock) <- runWithMocks $ update currentState TriggerLeftClick
+ it "hides window and triggers mouse click" $ do
+ (_, mock) <- runWithMocks $ update currentState $ TriggerMouseClick LeftClick
calls mock `shouldContain` [CallHideWindow, CallPressMouseButton LeftClick]
it "continues with action ShutdownApp without updating state" $ do
- ((nextState, action), _) <- runWithMocks $ update currentState TriggerLeftClick
+ ((nextState, action), _) <- runWithMocks $ update currentState $ TriggerMouseClick LeftClick
action `shouldBe` Just ShutdownApp
nextState `shouldBe` currentState
- context "with action ChainLeftClick" $ do
+ context "with action ChainMouseClick" $ do
let currentState = defaultState
- it "hides window, triggers left click and shows the window again" $ do
- (_, mock) <- runWithMocks $ update currentState ChainLeftClick
+ it "hides window, triggers mouse click and shows the window again" $ do
+ (_, mock) <- runWithMocks $ update currentState $ ChainMouseClick LeftClick
calls mock `shouldBe` [CallHideWindow, CallPressMouseButton LeftClick, CallShowWindow]
it "continues with action ResetKeys without updating state" $ do
- ((nextState, action), _) <- runWithMocks $ update currentState ChainLeftClick
+ ((nextState, action), _) <- runWithMocks $ update currentState $ ChainMouseClick LeftClick
action `shouldBe` Just ResetKeys
nextState `shouldBe` currentState