Skip to content

Commit 801b02b

Browse files
committed
added keyEvent tests
1 parent 316a902 commit 801b02b

File tree

2 files changed

+143
-0
lines changed

2 files changed

+143
-0
lines changed

core/src/processing/core/PApplet.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2842,6 +2842,7 @@ public void focusGained() { }
28422842
public void focusLost() {
28432843
// TODO: if user overrides this without calling super it's not gonna work
28442844
pressedKeys.clear();
2845+
keyPressed = false;
28452846
}
28462847

28472848

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
package processing.core;
2+
3+
import org.junit.Assert;
4+
import org.junit.Before;
5+
import org.junit.Test;
6+
import processing.event.KeyEvent;
7+
import java.util.HashSet;
8+
import java.util.Iterator;
9+
10+
public class PAppletKeyEventTest {
11+
12+
private static final int SHIFT_MASK = 1;
13+
private static final int CTRL_MASK = 2;
14+
private static final int ALT_MASK = 4;
15+
16+
private PApplet applet;
17+
18+
@Before
19+
public void setup() {
20+
applet = new PApplet();
21+
}
22+
23+
@Test
24+
public void testSingleKeyPressAndRelease() {
25+
KeyEvent pressEvent = new KeyEvent(null, 0L, KeyEvent.PRESS, 0, 'a', 65, false);
26+
applet.handleKeyEvent(pressEvent);
27+
Assert.assertEquals(1, applet.pressedKeys.size());
28+
29+
KeyEvent releaseEvent = new KeyEvent(null, 0L, KeyEvent.RELEASE, 0, 'a', 65, false);
30+
applet.handleKeyEvent(releaseEvent);
31+
Assert.assertEquals(0, applet.pressedKeys.size());
32+
Assert.assertFalse(applet.keyPressed);
33+
}
34+
35+
@Test
36+
public void testShiftAndLetterSequence() {
37+
KeyEvent pressA = new KeyEvent(null, 0L, KeyEvent.PRESS, 0, 'a', 65, false);
38+
applet.handleKeyEvent(pressA);
39+
40+
KeyEvent pressShift = new KeyEvent(null, 0L, KeyEvent.PRESS, SHIFT_MASK, 'A', 16, false);
41+
applet.handleKeyEvent(pressShift);
42+
43+
KeyEvent releaseA = new KeyEvent(null, 0L, KeyEvent.RELEASE, SHIFT_MASK, 'A', 65, false);
44+
applet.handleKeyEvent(releaseA);
45+
46+
KeyEvent releaseShift = new KeyEvent(null, 0L, KeyEvent.RELEASE, 0, 'A', 16, false);
47+
applet.handleKeyEvent(releaseShift);
48+
49+
Assert.assertFalse("keyPressed should be false after all keys released", applet.keyPressed);
50+
Assert.assertEquals("pressedKeys should be empty", true, applet.pressedKeys.isEmpty());
51+
}
52+
53+
@Test
54+
public void testControlAndLetterSequence() {
55+
KeyEvent pressCtrl = new KeyEvent(null, 0L, KeyEvent.PRESS, CTRL_MASK, '\0', 17, false);
56+
applet.handleKeyEvent(pressCtrl);
57+
58+
KeyEvent pressC = new KeyEvent(null, 0L, KeyEvent.PRESS, CTRL_MASK, (char)3, 67, false);
59+
applet.handleKeyEvent(pressC);
60+
61+
KeyEvent releaseC = new KeyEvent(null, 0L, KeyEvent.RELEASE, CTRL_MASK, 'c', 67, false);
62+
applet.handleKeyEvent(releaseC);
63+
64+
KeyEvent releaseCtrl = new KeyEvent(null, 0L, KeyEvent.RELEASE, 0, '\0', 17, false);
65+
applet.handleKeyEvent(releaseCtrl);
66+
67+
Assert.assertFalse("keyPressed should be false after all keys released", applet.keyPressed);
68+
Assert.assertTrue("pressedKeys should be empty", applet.pressedKeys.isEmpty());
69+
}
70+
71+
@Test
72+
public void testAltAndLetterSequence() {
73+
KeyEvent pressV = new KeyEvent(null, 0L, KeyEvent.PRESS, 0, 'v', 86, false);
74+
applet.handleKeyEvent(pressV);
75+
76+
KeyEvent pressAlt = new KeyEvent(null, 0L, KeyEvent.PRESS, ALT_MASK, 'v', 18, false);
77+
applet.handleKeyEvent(pressAlt);
78+
79+
KeyEvent releaseV = new KeyEvent(null, 0L, KeyEvent.RELEASE, ALT_MASK, 'v', 86, false);
80+
applet.handleKeyEvent(releaseV);
81+
82+
KeyEvent releaseAlt = new KeyEvent(null, 0L, KeyEvent.RELEASE, 0, 'v', 18, false);
83+
applet.handleKeyEvent(releaseAlt);
84+
85+
Assert.assertFalse("keyPressed should be false after all keys released", applet.keyPressed);
86+
Assert.assertEquals("pressedKeys should be empty", true, applet.pressedKeys.isEmpty());
87+
}
88+
89+
@Test
90+
public void testKeyRepeat() {
91+
applet.keyRepeatEnabled = false;
92+
93+
KeyEvent pressR = new KeyEvent(null, 0L, KeyEvent.PRESS, 0, 'r', 82, false);
94+
applet.handleKeyEvent(pressR);
95+
96+
KeyEvent repeatR = new KeyEvent(null, 0L, KeyEvent.PRESS, 0, 'r', 82, true);
97+
applet.handleKeyEvent(repeatR);
98+
99+
Assert.assertTrue("keyPressed should be true after key press", applet.keyPressed);
100+
Assert.assertEquals("pressedKeys should have 1 entry", 1, applet.pressedKeys.size());
101+
102+
KeyEvent releaseR = new KeyEvent(null, 0L, KeyEvent.RELEASE, 0, 'r', 82, false);
103+
applet.handleKeyEvent(releaseR);
104+
105+
Assert.assertFalse("keyPressed should be false after key release", applet.keyPressed);
106+
Assert.assertEquals("pressedKeys should be empty", true, applet.pressedKeys.isEmpty());
107+
}
108+
109+
@Test
110+
public void testKeyRepeatEnabled() {
111+
applet.keyRepeatEnabled = true;
112+
113+
KeyEvent pressT = new KeyEvent(null, 0L, KeyEvent.PRESS, 0, 't', 84, false);
114+
applet.handleKeyEvent(pressT);
115+
116+
KeyEvent repeatT = new KeyEvent(null, 0L, KeyEvent.PRESS, 0, 't', 84, true);
117+
applet.handleKeyEvent(repeatT);
118+
119+
Assert.assertTrue("keyPressed should be true with key repeat enabled", applet.keyPressed);
120+
Assert.assertEquals("pressedKeys should have 1 entry", 1, applet.pressedKeys.size());
121+
122+
KeyEvent releaseT = new KeyEvent(null, 0L, KeyEvent.RELEASE, 0, 't', 84, false);
123+
applet.handleKeyEvent(releaseT);
124+
125+
Assert.assertFalse("keyPressed should be false after key release", applet.keyPressed);
126+
Assert.assertEquals("pressedKeys should be empty", true, applet.pressedKeys.isEmpty());
127+
}
128+
129+
@Test
130+
public void testKeyFocusLost() {
131+
KeyEvent pressF = new KeyEvent(null, 0L, KeyEvent.PRESS, 0, 'f', 70, false);
132+
applet.handleKeyEvent(pressF);
133+
134+
Assert.assertTrue("keyPressed should be true after key press", applet.keyPressed);
135+
Assert.assertEquals("pressedKeys should have 1 entry", 1, applet.pressedKeys.size());
136+
137+
applet.focusLost();
138+
139+
Assert.assertFalse("keyPressed should be false after focus lost", applet.keyPressed);
140+
Assert.assertEquals("pressedKeys should be empty after focus lost", true, applet.pressedKeys.isEmpty());
141+
}
142+
}

0 commit comments

Comments
 (0)