diff options
| author | Akshay Nair <phenax5@gmail.com> | 2024-12-20 21:08:36 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2024-12-20 21:28:42 +0530 |
| commit | d8667213fa49242701db4bf592754ab87749efa5 (patch) | |
| tree | 1431542c3a140e804ddbf58dc60d979c4542ede5 /specs | |
| parent | 69f9c8ac053de7793c31c87572c9e044ae8369ee (diff) | |
| download | chelleport-d8667213fa49242701db4bf592754ab87749efa5.tar.gz chelleport-d8667213fa49242701db4bf592754ab87749efa5.zip | |
Add right mouse button click
Diffstat (limited to 'specs')
| -rw-r--r-- | specs/Specs/AppEventSpec.hs | 51 |
1 files changed, 41 insertions, 10 deletions
diff --git a/specs/Specs/AppEventSpec.hs b/specs/Specs/AppEventSpec.hs index 3cdbe94..9da4c87 100644 --- a/specs/Specs/AppEventSpec.hs +++ b/specs/Specs/AppEventSpec.hs @@ -11,7 +11,7 @@ test :: SpecWith () test = do describe "#eventHandler" $ do let mkEvent payload = SDL.Event {SDL.eventTimestamp = 0, SDL.eventPayload = payload} - let mkKeyboardEvent key motion = + let mkKeyboardEvent key motion modifier = mkEvent $ SDL.KeyboardEvent $ SDL.KeyboardEventData @@ -20,11 +20,12 @@ test = do SDL.keyboardEventKeysym = SDL.Keysym { SDL.keysymScancode = SDL.Scancode0, - SDL.keysymModifier = fromNumber 0, + SDL.keysymModifier = modifier, SDL.keysymKeycode = key }, SDL.keyboardEventKeyMotion = motion } + let defaultMod = fromNumber 0 context "when window quit event is triggered" $ do it "shuts down app" $ do @@ -33,31 +34,61 @@ test = do context "when escape key is pressed" $ do it "shuts down app" $ do - let action = eventHandler $ mkKeyboardEvent SDL.KeycodeEscape SDL.Pressed + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeEscape SDL.Pressed defaultMod action `shouldBe` Just ShutdownApp context "when space key is pressed" $ do it "triggers left mouse button click" $ do - let action = eventHandler $ mkKeyboardEvent SDL.KeycodeSpace SDL.Pressed + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeSpace SDL.Pressed defaultMod action `shouldBe` Just (TriggerMouseClick LeftClick) + context "when pressed with right shift" $ do + it "chains left mouse button click" $ do + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeSpace SDL.Pressed (defaultMod {SDL.keyModifierRightShift = True}) + action `shouldBe` Just (ChainMouseClick LeftClick) + + context "when pressed with left shift" $ do + it "chains left mouse button click" $ do + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeSpace SDL.Pressed (defaultMod {SDL.keyModifierLeftShift = True}) + action `shouldBe` Just (ChainMouseClick LeftClick) + + context "when minus key is pressed" $ do + it "triggers left mouse button click" $ do + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeMinus SDL.Pressed defaultMod + action `shouldBe` Just (TriggerMouseClick RightClick) + + context "when pressed with right shift" $ do + it "chains right mouse button click" $ do + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeMinus SDL.Pressed (defaultMod {SDL.keyModifierRightShift = True}) + action `shouldBe` Just (ChainMouseClick RightClick) + + context "when pressed with left shift" $ do + it "chains right mouse button click" $ do + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeMinus SDL.Pressed (defaultMod {SDL.keyModifierLeftShift = True}) + action `shouldBe` Just (ChainMouseClick RightClick) + context "when tab key is pressed" $ do it "resets key state" $ do - let action = eventHandler $ mkKeyboardEvent SDL.KeycodeTab SDL.Pressed + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeTab SDL.Pressed defaultMod + action `shouldBe` Just ResetKeys + + context "when backspace key is pressed" $ do + it "resets key state" $ do + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeBackspace SDL.Pressed defaultMod action `shouldBe` Just ResetKeys context "when an alphanumeric key (excluding Q) is pressed" $ do it "calls key input handler" $ do - eventHandler (mkKeyboardEvent SDL.KeycodeA SDL.Pressed) `shouldBe` Just (HandleKeyInput SDL.KeycodeA) - eventHandler (mkKeyboardEvent SDL.KeycodeQ SDL.Pressed) `shouldBe` Just (HandleKeyInput SDL.KeycodeQ) - eventHandler (mkKeyboardEvent SDL.Keycode9 SDL.Pressed) `shouldBe` Just (HandleKeyInput SDL.Keycode9) + eventHandler (mkKeyboardEvent SDL.KeycodeA SDL.Pressed defaultMod) `shouldBe` Just (HandleKeyInput SDL.KeycodeA) + eventHandler (mkKeyboardEvent SDL.KeycodeQ SDL.Pressed defaultMod) `shouldBe` Just (HandleKeyInput SDL.KeycodeQ) + eventHandler (mkKeyboardEvent SDL.Keycode9 SDL.Pressed defaultMod) `shouldBe` Just (HandleKeyInput SDL.Keycode9) context "when shift key is pressed" $ do it "enables shift" $ do - let action = eventHandler $ mkKeyboardEvent SDL.KeycodeRShift SDL.Pressed + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeRShift SDL.Pressed defaultMod action `shouldBe` Just (UpdateShiftState True) context "when shift key is released" $ do it "disabled shift" $ do - let action = eventHandler $ mkKeyboardEvent SDL.KeycodeRShift SDL.Released + let action = eventHandler $ mkKeyboardEvent SDL.KeycodeRShift SDL.Released defaultMod action `shouldBe` Just (UpdateShiftState False) |
