@@ -179,6 +179,191 @@ TEST(EngineTest, KeyState)
179
179
ASSERT_FALSE (engine.keyPressed (" any" ));
180
180
}
181
181
182
+ TEST (EngineTest, WhenKeyPressed)
183
+ {
184
+ Project p (" when_key_pressed.sb3" );
185
+ ASSERT_TRUE (p.load ());
186
+
187
+ p.run ();
188
+
189
+ auto engine = p.engine ();
190
+
191
+ Stage *stage = engine->stage ();
192
+ ASSERT_TRUE (stage);
193
+
194
+ // no pressed key
195
+ ASSERT_VAR (stage, " space_pressed" );
196
+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 0 );
197
+ ASSERT_VAR (stage, " right_arrow_pressed" );
198
+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 0 );
199
+ ASSERT_VAR (stage, " any_key_pressed" );
200
+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 0 );
201
+ ASSERT_VAR (stage, " a_pressed" );
202
+ ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 0 );
203
+ ASSERT_VAR (stage, " x_pressed" );
204
+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 0 );
205
+ ASSERT_VAR (stage, " 4_pressed" );
206
+ ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 0 );
207
+
208
+ // space
209
+ engine->setKeyState (" space" , true );
210
+ p.run ();
211
+
212
+ ASSERT_VAR (stage, " space_pressed" );
213
+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
214
+ engine->setKeyState (" space" , false );
215
+ p.run ();
216
+
217
+ ASSERT_VAR (stage, " space_pressed" );
218
+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
219
+ ASSERT_VAR (stage, " right_arrow_pressed" );
220
+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 0 );
221
+ ASSERT_VAR (stage, " any_key_pressed" );
222
+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 1 );
223
+ ASSERT_VAR (stage, " a_pressed" );
224
+ ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 0 );
225
+ ASSERT_VAR (stage, " x_pressed" );
226
+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 0 );
227
+ ASSERT_VAR (stage, " 4_pressed" );
228
+ ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 0 );
229
+
230
+ // right arrow
231
+ engine->setKeyState (" right arrow" , true );
232
+ p.run ();
233
+
234
+ ASSERT_VAR (stage, " right_arrow_pressed" );
235
+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
236
+ engine->setKeyState (" right arrow" , false );
237
+ p.run ();
238
+
239
+ ASSERT_VAR (stage, " space_pressed" );
240
+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
241
+ ASSERT_VAR (stage, " right_arrow_pressed" );
242
+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
243
+ ASSERT_VAR (stage, " any_key_pressed" );
244
+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 2 );
245
+ ASSERT_VAR (stage, " a_pressed" );
246
+ ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 0 );
247
+ ASSERT_VAR (stage, " x_pressed" );
248
+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 0 );
249
+ ASSERT_VAR (stage, " 4_pressed" );
250
+ ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 0 );
251
+
252
+ // any key
253
+ engine->setAnyKeyPressed (true );
254
+ p.run ();
255
+
256
+ ASSERT_VAR (stage, " any_key_pressed" );
257
+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 3 );
258
+ engine->setAnyKeyPressed (false );
259
+ p.run ();
260
+
261
+ ASSERT_VAR (stage, " space_pressed" );
262
+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
263
+ ASSERT_VAR (stage, " right_arrow_pressed" );
264
+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
265
+ ASSERT_VAR (stage, " any_key_pressed" );
266
+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 3 );
267
+ ASSERT_VAR (stage, " a_pressed" );
268
+ ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 0 );
269
+ ASSERT_VAR (stage, " x_pressed" );
270
+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 0 );
271
+ ASSERT_VAR (stage, " 4_pressed" );
272
+ ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 0 );
273
+
274
+ // a
275
+ engine->setKeyState (" a" , true );
276
+ p.run ();
277
+
278
+ ASSERT_VAR (stage, " a_pressed" );
279
+ ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 1 );
280
+ engine->setKeyState (" a" , false );
281
+ p.run ();
282
+
283
+ ASSERT_VAR (stage, " space_pressed" );
284
+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
285
+ ASSERT_VAR (stage, " right_arrow_pressed" );
286
+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
287
+ ASSERT_VAR (stage, " any_key_pressed" );
288
+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 4 );
289
+ ASSERT_VAR (stage, " a_pressed" );
290
+ ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 1 );
291
+ ASSERT_VAR (stage, " x_pressed" );
292
+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 0 );
293
+ ASSERT_VAR (stage, " 4_pressed" );
294
+ ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 0 );
295
+
296
+ // x
297
+ engine->setKeyState (" x" , true );
298
+ p.run ();
299
+
300
+ ASSERT_VAR (stage, " x_pressed" );
301
+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 1 );
302
+ engine->setKeyState (" x" , false );
303
+ p.run ();
304
+
305
+ ASSERT_VAR (stage, " space_pressed" );
306
+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
307
+ ASSERT_VAR (stage, " right_arrow_pressed" );
308
+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
309
+ ASSERT_VAR (stage, " any_key_pressed" );
310
+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 5 );
311
+ ASSERT_VAR (stage, " a_pressed" );
312
+ ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 1 );
313
+ ASSERT_VAR (stage, " x_pressed" );
314
+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 1 );
315
+ ASSERT_VAR (stage, " 4_pressed" );
316
+ ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 0 );
317
+
318
+ // 4
319
+ engine->setKeyState (" 4" , true );
320
+ p.run ();
321
+
322
+ ASSERT_VAR (stage, " 4_pressed" );
323
+ ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 1 );
324
+ engine->setKeyState (" 4" , false );
325
+ p.run ();
326
+
327
+ ASSERT_VAR (stage, " space_pressed" );
328
+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 1 );
329
+ ASSERT_VAR (stage, " right_arrow_pressed" );
330
+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
331
+ ASSERT_VAR (stage, " any_key_pressed" );
332
+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 6 );
333
+ ASSERT_VAR (stage, " a_pressed" );
334
+ ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 1 );
335
+ ASSERT_VAR (stage, " x_pressed" );
336
+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 1 );
337
+ ASSERT_VAR (stage, " 4_pressed" );
338
+ ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 1 );
339
+
340
+ // multiple
341
+ engine->setKeyState (" space" , true );
342
+ engine->setKeyState (" x" , true );
343
+ p.run ();
344
+
345
+ ASSERT_VAR (stage, " space_pressed" );
346
+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 2 );
347
+ ASSERT_VAR (stage, " x_pressed" );
348
+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 2 );
349
+ engine->setKeyState (" space" , false );
350
+ engine->setKeyState (" x" , false );
351
+ p.run ();
352
+
353
+ ASSERT_VAR (stage, " space_pressed" );
354
+ ASSERT_EQ (GET_VAR (stage, " space_pressed" )->value ().toInt (), 2 );
355
+ ASSERT_VAR (stage, " right_arrow_pressed" );
356
+ ASSERT_EQ (GET_VAR (stage, " right_arrow_pressed" )->value ().toInt (), 1 );
357
+ ASSERT_VAR (stage, " any_key_pressed" );
358
+ ASSERT_EQ (GET_VAR (stage, " any_key_pressed" )->value ().toInt (), 8 );
359
+ ASSERT_VAR (stage, " a_pressed" );
360
+ ASSERT_EQ (GET_VAR (stage, " a_pressed" )->value ().toInt (), 1 );
361
+ ASSERT_VAR (stage, " x_pressed" );
362
+ ASSERT_EQ (GET_VAR (stage, " x_pressed" )->value ().toInt (), 2 );
363
+ ASSERT_VAR (stage, " 4_pressed" );
364
+ ASSERT_EQ (GET_VAR (stage, " 4_pressed" )->value ().toInt (), 1 );
365
+ }
366
+
182
367
TEST (EngineTest, MouseX)
183
368
{
184
369
Engine engine;
0 commit comments