@@ -11,6 +11,7 @@ import org.hamcrest.CoreMatchers.`is`
11
11
import org.hamcrest.MatcherAssert.assertThat
12
12
import org.junit.jupiter.api.Assertions.assertFalse
13
13
import org.junit.jupiter.api.Assertions.assertTrue
14
+ import org.junit.jupiter.api.BeforeEach
14
15
import org.junit.jupiter.api.Test
15
16
16
17
/* *
@@ -20,6 +21,13 @@ import org.junit.jupiter.api.Test
20
21
*/
21
22
class InputModifierTest {
22
23
24
+ private lateinit var input: Input
25
+
26
+ @BeforeEach
27
+ fun setUp () {
28
+ input = Input ()
29
+ }
30
+
23
31
@Test
24
32
fun `Convert Shift from MouseEvent` () {
25
33
val e = mouseEvent(true , false , false )
@@ -116,13 +124,44 @@ class InputModifierTest {
116
124
assertTrue(InputModifier .NONE .toKeyCode() == KeyCode .ALPHANUMERIC )
117
125
}
118
126
119
- // private fun mouseEvent(shift: Boolean, ctrl: Boolean, alt: Boolean): MouseEvent {
120
- // return MouseEvent(MouseEvent.ANY, 0.0, 0.0, 0.0, 0.0, MouseButton.PRIMARY, 1,
121
- // shift, ctrl, alt,
122
- // false, false, false, false, false, false, false, null)
123
- // }
124
- //
125
- // private fun keyEvent(shift: Boolean, ctrl: Boolean, alt: Boolean): KeyEvent {
126
- // return KeyEvent(KeyEvent.ANY, "", "", KeyCode.A, shift, ctrl, alt, false)
127
- // }
127
+ @Test
128
+ fun `Do not release illegal keys when main key is released` () {
129
+ var callsShift = 0
130
+
131
+ input.addTriggerListener(object : TriggerListener () {
132
+ override fun onKey (keyTrigger : KeyTrigger ) {
133
+ if (keyTrigger.key == KeyCode .SHIFT ) {
134
+ callsShift++
135
+ }
136
+ }
137
+
138
+ override fun onKeyEnd (keyTrigger : KeyTrigger ) {
139
+ if (keyTrigger.key == KeyCode .SHIFT ) {
140
+ callsShift = 999
141
+ }
142
+ }
143
+ })
144
+
145
+ input.update(0.0 )
146
+ assertThat(callsShift, `is `(0 ))
147
+
148
+ // press shift
149
+ input.mockKeyPress(KeyCode .SHIFT )
150
+ input.update(0.0 )
151
+ assertThat(callsShift, `is `(1 ))
152
+
153
+ // press arbitrary key
154
+ input.mockKeyPress(KeyCode .D )
155
+ input.update(0.0 )
156
+ assertThat(callsShift, `is `(2 ))
157
+
158
+ // release that arbitrary key
159
+ input.mockKeyRelease(KeyCode .D )
160
+ input.update(0.0 )
161
+ assertThat(callsShift, `is `(3 ))
162
+
163
+ // shift must still remain to be active
164
+ input.update(0.0 )
165
+ assertThat(callsShift, `is `(4 ))
166
+ }
128
167
}
0 commit comments