diff --git a/test/game/components/flipper_test.dart b/test/game/components/flipper_test.dart index e2f5291e..b9894d9a 100644 --- a/test/game/components/flipper_test.dart +++ b/test/game/components/flipper_test.dart @@ -1,5 +1,7 @@ // ignore_for_file: cascade_invocations +import 'dart:collection'; + import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_test/flame_test.dart'; import 'package:flutter/services.dart'; @@ -113,6 +115,15 @@ void main() { }); group('onKeyEvent', () { + final leftKeys = UnmodifiableListView([ + LogicalKeyboardKey.arrowLeft, + LogicalKeyboardKey.keyA, + ]); + final rightKeys = UnmodifiableListView([ + LogicalKeyboardKey.arrowRight, + LogicalKeyboardKey.keyD, + ]); + group('and Flipper is left', () { late Flipper flipper; @@ -120,10 +131,7 @@ void main() { flipper = Flipper.left(position: Vector2.zero()); }); - testRawKeyDownEvents([ - LogicalKeyboardKey.arrowLeft, - LogicalKeyboardKey.keyA, - ], (event) { + testRawKeyDownEvents(leftKeys, (event) { flameTester.test( 'moves upwards ' 'when ${event.logicalKey.keyLabel} is pressed', @@ -137,10 +145,7 @@ void main() { ); }); - testRawKeyUpEvents([ - LogicalKeyboardKey.arrowLeft, - LogicalKeyboardKey.keyA, - ], (event) { + testRawKeyUpEvents(leftKeys, (event) { flameTester.test( 'moves downwards ' 'when ${event.logicalKey.keyLabel} is released', @@ -153,6 +158,34 @@ void main() { }, ); }); + + testRawKeyUpEvents(rightKeys, (event) { + flameTester.test( + 'does nothing ' + 'when ${event.logicalKey.keyLabel} is released', + (game) async { + await game.ensureAdd(flipper); + flipper.onKeyEvent(event, {}); + + expect(flipper.body.linearVelocity.y, isZero); + expect(flipper.body.linearVelocity.x, isZero); + }, + ); + }); + + testRawKeyDownEvents(rightKeys, (event) { + flameTester.test( + 'does nothing ' + 'when ${event.logicalKey.keyLabel} is pressed', + (game) async { + await game.ensureAdd(flipper); + flipper.onKeyEvent(event, {}); + + expect(flipper.body.linearVelocity.y, isZero); + expect(flipper.body.linearVelocity.x, isZero); + }, + ); + }); }); group('and Flipper is right', () { @@ -162,10 +195,7 @@ void main() { flipper = Flipper.right(position: Vector2.zero()); }); - testRawKeyDownEvents([ - LogicalKeyboardKey.arrowRight, - LogicalKeyboardKey.keyD, - ], (event) { + testRawKeyDownEvents(rightKeys, (event) { flameTester.test( 'moves upwards ' 'when ${event.logicalKey.keyLabel} is pressed', @@ -179,10 +209,7 @@ void main() { ); }); - testRawKeyUpEvents([ - LogicalKeyboardKey.arrowRight, - LogicalKeyboardKey.keyD, - ], (event) { + testRawKeyUpEvents(rightKeys, (event) { flameTester.test( 'moves downwards ' 'when ${event.logicalKey.keyLabel} is released', @@ -195,6 +222,34 @@ void main() { }, ); }); + + testRawKeyUpEvents(leftKeys, (event) { + flameTester.test( + 'does nothing ' + 'when ${event.logicalKey.keyLabel} is released', + (game) async { + await game.ensureAdd(flipper); + flipper.onKeyEvent(event, {}); + + expect(flipper.body.linearVelocity.y, isZero); + expect(flipper.body.linearVelocity.x, isZero); + }, + ); + }); + + testRawKeyDownEvents(leftKeys, (event) { + flameTester.test( + 'does nothing ' + 'when ${event.logicalKey.keyLabel} is pressed', + (game) async { + await game.ensureAdd(flipper); + flipper.onKeyEvent(event, {}); + + expect(flipper.body.linearVelocity.y, isZero); + expect(flipper.body.linearVelocity.x, isZero); + }, + ); + }); }); }); },