From 4dabaf00ce290397df952946c88b987f70bdcff9 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Fri, 29 Apr 2022 11:40:22 +0200 Subject: [PATCH] test: tests for blink behavior --- .../multiball_blinking_behavior_test.dart | 6 +- .../behaviors/multiballs_behavior_test.dart | 61 ++++++++++++++++--- 2 files changed, 57 insertions(+), 10 deletions(-) diff --git a/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart b/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart index 27210c72..39b2bb0f 100644 --- a/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart +++ b/packages/pinball_components/test/src/components/multiball/behaviors/multiball_blinking_behavior_test.dart @@ -1,3 +1,5 @@ +// ignore_for_file: prefer_const_constructors + import 'dart:async'; import 'package:bloc_test/bloc_test.dart'; @@ -17,7 +19,7 @@ void main() { 'MultiballBlinkingBehavior', () { flameTester.testGameWidget( - 'calls onBlinked after 0.05 seconds when inactive', + 'calls onBlinked after 0.01 seconds', setUp: (game, tester) async { final behavior = MultiballBlinkingBehavior(); final bloc = MockMultiballCubit(); @@ -39,7 +41,7 @@ void main() { ), ); await tester.pump(); - game.update(0.05); + game.update(0.01); await streamController.close(); verify(bloc.onBlink).called(1); diff --git a/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart b/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart index a8bde464..64341b86 100644 --- a/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart +++ b/test/game/components/multiballs/behaviors/multiballs_behavior_test.dart @@ -1,4 +1,4 @@ -// ignore_for_file: cascade_invocations +// ignore_for_file: cascade_invocations, prefer_const_constructors import 'dart:async'; @@ -24,11 +24,6 @@ void main() { setUp(() { gameBloc = MockGameBloc(); - whenListen( - gameBloc, - const Stream.empty(), - initialState: const GameState.initial(), - ); }); final flameBlocTester = FlameBlocTester( @@ -38,21 +33,71 @@ void main() { ); flameBlocTester.testGameWidget( - 'adds a new ball to the game when all bumpers are active', + 'animate multiballs when new GameBonus.dashNest received', setUp: (game, tester) async { + final streamController = StreamController(); + whenListen( + gameBloc, + streamController.stream, + initialState: const GameState.initial(), + ); + + final behavior = MultiballsBehavior(); + final parent = Multiballs.test(); + final multiballs = [ + Multiball.test(bloc: MockMultiballCubit()), + Multiball.test(bloc: MockMultiballCubit()), + Multiball.test(bloc: MockMultiballCubit()), + Multiball.test(bloc: MockMultiballCubit()), + ]; + + await parent.addAll(multiballs); + await game.ensureAdd(parent); + await parent.ensureAdd(behavior); + + streamController.add( + GameState.initial().copyWith(bonusHistory: [GameBonus.dashNest]), + ); + await tester.pump(); + + for (final multiball in multiballs) { + verify(multiball.bloc.onAnimate).called(1); + } + }, + ); + + flameBlocTester.testGameWidget( + "don't animate multiballs when now new GameBonus.dashNest received", + setUp: (game, tester) async { + final streamController = StreamController(); + whenListen( + gameBloc, + streamController.stream, + initialState: const GameState.initial(), + ); + final behavior = MultiballsBehavior(); final parent = Multiballs.test(); final multiballs = [ Multiball.test(bloc: MockMultiballCubit()), Multiball.test(bloc: MockMultiballCubit()), Multiball.test(bloc: MockMultiballCubit()), + Multiball.test(bloc: MockMultiballCubit()), ]; + await parent.addAll(multiballs); await game.ensureAdd(parent); await parent.ensureAdd(behavior); + streamController.add( + GameState.initial().copyWith( + bonusHistory: [GameBonus.sparkyTurboCharge], + ), + ); + await tester.pump(); + for (final multiball in multiballs) { - verify(() => multiball.bloc.onAnimate()).called(1); + verifyNever(multiball.bloc.onAnimate); } }, );