@@ -289,6 +289,40 @@ void can_undo_the_last_move() {
289289 .isEqualTo (initialColumn );
290290 }
291291
292+ @ Test
293+ void resets_level_when_backspace_key_is_pressed () {
294+ // given - make a move and change the level state
295+ int initialLine = controller .getWorker ().getLine ();
296+ int initialColumn = controller .getWorker ().getColumn ();
297+
298+ // Move right to change the state
299+ KeyEvent rightKey = new KeyEvent (window ,
300+ KeyEvent .KEY_PRESSED ,
301+ System .currentTimeMillis (),
302+ 0 ,
303+ KeyEvent .VK_RIGHT ,
304+ KeyEvent .CHAR_UNDEFINED );
305+ window .keyPressed (rightKey );
306+ window .keyPressed (rightKey ); // again
307+
308+ // when - press backspace to reset the level
309+ KeyEvent resetKey = new KeyEvent (window ,
310+ KeyEvent .KEY_PRESSED ,
311+ System .currentTimeMillis (),
312+ 0 ,
313+ KeyEvent .VK_BACK_SPACE ,
314+ KeyEvent .CHAR_UNDEFINED );
315+ window .keyPressed (resetKey );
316+
317+ // then - worker should be back at initial position
318+ then (controller .getWorker ().getLine ())
319+ .as ("line position is restored when resetting level" )
320+ .isEqualTo (initialLine );
321+ then (controller .getWorker ().getColumn ())
322+ .as ("column position is restored when resetting level" )
323+ .isEqualTo (initialColumn );
324+ }
325+
292326 @ Test
293327 void completing_a_custom_level_disposes_window_and_shows_home_window () {
294328 // given - create a test window with the simplified level that only needs one push
0 commit comments