From 65591d5bd26afc212bc9513592cb1cd70156df55 Mon Sep 17 00:00:00 2001 From: alestiago Date: Mon, 28 Mar 2022 17:57:24 +0100 Subject: [PATCH] feat: tested flipper_controller --- lib/game/components/components.dart | 2 +- .../{flipper.dart => flipper_controller.dart} | 0 .../test/helpers/helpers.dart | 1 - .../test/helpers/key_testers.dart | 37 ---- .../test/helpers/mocks.dart | 16 -- .../test/src/components/flipper_test.dart | 146 --------------- test/game/components/bonus_word_test.dart | 1 + .../components/flipper_controller_test.dart | 169 ++++++++++++++++++ 8 files changed, 171 insertions(+), 201 deletions(-) rename lib/game/components/{flipper.dart => flipper_controller.dart} (100%) delete mode 100644 packages/pinball_components/test/helpers/key_testers.dart create mode 100644 test/game/components/flipper_controller_test.dart diff --git a/lib/game/components/components.dart b/lib/game/components/components.dart index 6513e363..33bf28da 100644 --- a/lib/game/components/components.dart +++ b/lib/game/components/components.dart @@ -2,7 +2,7 @@ export 'ball.dart'; export 'baseboard.dart'; export 'board.dart'; export 'bonus_word.dart'; -export 'flipper.dart'; +export 'flipper_controller.dart'; export 'flutter_forest.dart'; export 'jetpack_ramp.dart'; export 'kicker.dart'; diff --git a/lib/game/components/flipper.dart b/lib/game/components/flipper_controller.dart similarity index 100% rename from lib/game/components/flipper.dart rename to lib/game/components/flipper_controller.dart diff --git a/packages/pinball_components/test/helpers/helpers.dart b/packages/pinball_components/test/helpers/helpers.dart index b5326db2..312f42ec 100644 --- a/packages/pinball_components/test/helpers/helpers.dart +++ b/packages/pinball_components/test/helpers/helpers.dart @@ -1,3 +1,2 @@ -export 'key_testers.dart'; export 'mocks.dart'; export 'test_game.dart'; diff --git a/packages/pinball_components/test/helpers/key_testers.dart b/packages/pinball_components/test/helpers/key_testers.dart deleted file mode 100644 index 04fed1da..00000000 --- a/packages/pinball_components/test/helpers/key_testers.dart +++ /dev/null @@ -1,37 +0,0 @@ -import 'package:flutter/services.dart'; -import 'package:meta/meta.dart'; -import 'package:mocktail/mocktail.dart'; - -import 'helpers.dart'; - -@isTest -void testRawKeyUpEvents( - List keys, - Function(RawKeyUpEvent) test, -) { - for (final key in keys) { - test(_mockKeyUpEvent(key)); - } -} - -RawKeyUpEvent _mockKeyUpEvent(LogicalKeyboardKey key) { - final event = MockRawKeyUpEvent(); - when(() => event.logicalKey).thenReturn(key); - return event; -} - -@isTest -void testRawKeyDownEvents( - List keys, - Function(RawKeyDownEvent) test, -) { - for (final key in keys) { - test(_mockKeyDownEvent(key)); - } -} - -RawKeyDownEvent _mockKeyDownEvent(LogicalKeyboardKey key) { - final event = MockRawKeyDownEvent(); - when(() => event.logicalKey).thenReturn(key); - return event; -} diff --git a/packages/pinball_components/test/helpers/mocks.dart b/packages/pinball_components/test/helpers/mocks.dart index b7a0ecb5..67df9918 100644 --- a/packages/pinball_components/test/helpers/mocks.dart +++ b/packages/pinball_components/test/helpers/mocks.dart @@ -1,21 +1,5 @@ import 'dart:ui'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/services.dart'; import 'package:mocktail/mocktail.dart'; class MockCanvas extends Mock implements Canvas {} - -class MockRawKeyDownEvent extends Mock implements RawKeyDownEvent { - @override - String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) { - return super.toString(); - } -} - -class MockRawKeyUpEvent extends Mock implements RawKeyUpEvent { - @override - String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) { - return super.toString(); - } -} diff --git a/packages/pinball_components/test/src/components/flipper_test.dart b/packages/pinball_components/test/src/components/flipper_test.dart index 65c44028..b654beed 100644 --- a/packages/pinball_components/test/src/components/flipper_test.dart +++ b/packages/pinball_components/test/src/components/flipper_test.dart @@ -1,11 +1,8 @@ // 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/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:pinball_components/pinball_components.dart'; @@ -126,149 +123,6 @@ 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; - - setUp(() { - flipper = Flipper( - side: BoardSide.left, - ); - }); - - testRawKeyDownEvents(leftKeys, (event) { - flameTester.test( - 'moves upwards ' - 'when ${event.logicalKey.keyLabel} is pressed', - (game) async { - await game.ensureAdd(flipper); - flipper.onKeyEvent(event, {}); - - expect(flipper.body.linearVelocity.y, isPositive); - expect(flipper.body.linearVelocity.x, isZero); - }, - ); - }); - - testRawKeyUpEvents(leftKeys, (event) { - flameTester.test( - 'moves downwards ' - 'when ${event.logicalKey.keyLabel} is released', - (game) async { - await game.ensureAdd(flipper); - flipper.onKeyEvent(event, {}); - - expect(flipper.body.linearVelocity.y, isNegative); - expect(flipper.body.linearVelocity.x, isZero); - }, - ); - }); - - 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', () { - late Flipper flipper; - - setUp(() { - flipper = Flipper( - side: BoardSide.right, - ); - }); - - testRawKeyDownEvents(rightKeys, (event) { - flameTester.test( - 'moves upwards ' - 'when ${event.logicalKey.keyLabel} is pressed', - (game) async { - await game.ensureAdd(flipper); - flipper.onKeyEvent(event, {}); - - expect(flipper.body.linearVelocity.y, isPositive); - expect(flipper.body.linearVelocity.x, isZero); - }, - ); - }); - - testRawKeyUpEvents(rightKeys, (event) { - flameTester.test( - 'moves downwards ' - 'when ${event.logicalKey.keyLabel} is released', - (game) async { - await game.ensureAdd(flipper); - flipper.onKeyEvent(event, {}); - - expect(flipper.body.linearVelocity.y, isNegative); - expect(flipper.body.linearVelocity.x, isZero); - }, - ); - }); - - 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); - }, - ); - }); - }); - }); }, ); } diff --git a/test/game/components/bonus_word_test.dart b/test/game/components/bonus_word_test.dart index 293062ae..001ccd46 100644 --- a/test/game/components/bonus_word_test.dart +++ b/test/game/components/bonus_word_test.dart @@ -29,6 +29,7 @@ void main() { group('listenWhen', () { final previousState = MockGameState(); final currentState = MockGameState(); + test( 'returns true when there is a new word bonus awarded', () { diff --git a/test/game/components/flipper_controller_test.dart b/test/game/components/flipper_controller_test.dart new file mode 100644 index 00000000..eabeca5e --- /dev/null +++ b/test/game/components/flipper_controller_test.dart @@ -0,0 +1,169 @@ +import 'dart:collection'; + +import 'package:flame_test/flame_test.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball/game/game.dart'; +import 'package:pinball_components/pinball_components.dart'; + +import '../../helpers/helpers.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + final flameTester = FlameTester(PinballGameTest.create); + + group('FlipperController', () { + group('onKeyEvent', () { + final leftKeys = UnmodifiableListView([ + LogicalKeyboardKey.arrowLeft, + LogicalKeyboardKey.keyA, + ]); + final rightKeys = UnmodifiableListView([ + LogicalKeyboardKey.arrowRight, + LogicalKeyboardKey.keyD, + ]); + + group('and Flipper is left', () { + late Flipper flipper; + late FlipperController controller; + + setUp(() { + flipper = Flipper(side: BoardSide.left); + controller = FlipperController(flipper); + flipper.add(controller); + }); + + testRawKeyDownEvents(leftKeys, (event) { + flameTester.test( + 'moves upwards ' + 'when ${event.logicalKey.keyLabel} is pressed', + (game) async { + await game.ready(); + await game.add(flipper); + controller.onKeyEvent(event, {}); + + expect(flipper.body.linearVelocity.y, isPositive); + expect(flipper.body.linearVelocity.x, isZero); + }, + ); + }); + + testRawKeyUpEvents(leftKeys, (event) { + flameTester.test( + 'moves downwards ' + 'when ${event.logicalKey.keyLabel} is released', + (game) async { + await game.ready(); + await game.add(flipper); + controller.onKeyEvent(event, {}); + + expect(flipper.body.linearVelocity.y, isNegative); + expect(flipper.body.linearVelocity.x, isZero); + }, + ); + }); + + testRawKeyUpEvents(rightKeys, (event) { + flameTester.test( + 'does nothing ' + 'when ${event.logicalKey.keyLabel} is released', + (game) async { + await game.ready(); + await game.add(flipper); + controller.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.ready(); + await game.add(flipper); + controller.onKeyEvent(event, {}); + + expect(flipper.body.linearVelocity.y, isZero); + expect(flipper.body.linearVelocity.x, isZero); + }, + ); + }); + }); + + group('and Flipper is right', () { + late Flipper flipper; + late FlipperController controller; + + setUp(() { + flipper = Flipper(side: BoardSide.right); + controller = FlipperController(flipper); + flipper.add(controller); + }); + + testRawKeyDownEvents(rightKeys, (event) { + flameTester.test( + 'moves upwards ' + 'when ${event.logicalKey.keyLabel} is pressed', + (game) async { + await game.ready(); + await game.add(flipper); + controller.onKeyEvent(event, {}); + + expect(flipper.body.linearVelocity.y, isPositive); + expect(flipper.body.linearVelocity.x, isZero); + }, + ); + }); + + testRawKeyUpEvents(rightKeys, (event) { + flameTester.test( + 'moves downwards ' + 'when ${event.logicalKey.keyLabel} is released', + (game) async { + await game.ready(); + await game.add(flipper); + controller.onKeyEvent(event, {}); + + expect(flipper.body.linearVelocity.y, isNegative); + expect(flipper.body.linearVelocity.x, isZero); + }, + ); + }); + + testRawKeyUpEvents(leftKeys, (event) { + flameTester.test( + 'does nothing ' + 'when ${event.logicalKey.keyLabel} is released', + (game) async { + await game.ready(); + await game.add(flipper); + controller.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.ready(); + await game.add(flipper); + controller.onKeyEvent(event, {}); + + expect(flipper.body.linearVelocity.y, isZero); + expect(flipper.body.linearVelocity.x, isZero); + }, + ); + }); + }); + }); + }); +}