diff --git a/test/game/bloc/game_state_test.dart b/test/game/bloc/game_state_test.dart index ed80d192..9fb863ef 100644 --- a/test/game/bloc/game_state_test.dart +++ b/test/game/bloc/game_state_test.dart @@ -10,6 +10,7 @@ void main() { GameState( score: 0, balls: 0, + bonusBalls: 0, activatedBonusLetters: const [], activatedDashNests: const {}, bonusHistory: const [], @@ -18,6 +19,7 @@ void main() { const GameState( score: 0, balls: 0, + bonusBalls: 0, activatedBonusLetters: [], activatedDashNests: {}, bonusHistory: [], @@ -32,6 +34,7 @@ void main() { const GameState( score: 0, balls: 0, + bonusBalls: 0, activatedBonusLetters: [], activatedDashNests: {}, bonusHistory: [], @@ -49,6 +52,25 @@ void main() { () => GameState( balls: -1, score: 0, + bonusBalls: 0, + activatedBonusLetters: const [], + activatedDashNests: const {}, + bonusHistory: const [], + ), + throwsAssertionError, + ); + }, + ); + + test( + 'throws AssertionError ' + 'when bonusBalls are negative', + () { + expect( + () => GameState( + balls: 0, + score: 0, + bonusBalls: -1, activatedBonusLetters: const [], activatedDashNests: const {}, bonusHistory: const [], @@ -65,6 +87,7 @@ void main() { expect( () => GameState( balls: 0, + bonusBalls: 0, score: -1, activatedBonusLetters: const [], activatedDashNests: const {}, @@ -82,6 +105,7 @@ void main() { const gameState = GameState( balls: 0, score: 0, + bonusBalls: 0, activatedBonusLetters: [], activatedDashNests: {}, bonusHistory: [], @@ -95,6 +119,7 @@ void main() { const gameState = GameState( balls: 1, score: 0, + bonusBalls: 0, activatedBonusLetters: [], activatedDashNests: {}, bonusHistory: [], @@ -110,6 +135,7 @@ void main() { const gameState = GameState( balls: 3, score: 0, + bonusBalls: 0, activatedBonusLetters: [1], activatedDashNests: {}, bonusHistory: [], @@ -124,6 +150,7 @@ void main() { const gameState = GameState( balls: 3, score: 0, + bonusBalls: 0, activatedBonusLetters: [1], activatedDashNests: {}, bonusHistory: [], @@ -140,6 +167,7 @@ void main() { () { const gameState = GameState( balls: 0, + bonusBalls: 0, score: 2, activatedBonusLetters: [], activatedDashNests: {}, @@ -158,6 +186,7 @@ void main() { () { const gameState = GameState( balls: 0, + bonusBalls: 0, score: 2, activatedBonusLetters: [], activatedDashNests: {}, @@ -177,6 +206,7 @@ void main() { const gameState = GameState( score: 2, balls: 0, + bonusBalls: 0, activatedBonusLetters: [], activatedDashNests: {}, bonusHistory: [], @@ -184,6 +214,7 @@ void main() { final otherGameState = GameState( score: gameState.score + 1, balls: gameState.balls + 1, + bonusBalls: gameState.bonusBalls + 1, activatedBonusLetters: const [0], activatedDashNests: const {'1'}, bonusHistory: const [GameBonus.word], diff --git a/test/game/components/bonus_word_test.dart b/test/game/components/bonus_word_test.dart index f01fced9..733c954f 100644 --- a/test/game/components/bonus_word_test.dart +++ b/test/game/components/bonus_word_test.dart @@ -262,6 +262,7 @@ void main() { const state = GameState( score: 0, balls: 2, + bonusBalls: 0, activatedBonusLetters: [0], activatedDashNests: {}, bonusHistory: [], @@ -290,6 +291,7 @@ void main() { const state = GameState( score: 0, balls: 2, + bonusBalls: 0, activatedBonusLetters: [0], activatedDashNests: {}, bonusHistory: [], @@ -333,6 +335,7 @@ void main() { final state = GameState( score: 0, balls: 2, + bonusBalls: 0, activatedBonusLetters: [index], activatedDashNests: const {}, bonusHistory: const [], diff --git a/test/game/components/controlled_ball_test.dart b/test/game/components/controlled_ball_test.dart index 05056484..84de8c64 100644 --- a/test/game/components/controlled_ball_test.dart +++ b/test/game/components/controlled_ball_test.dart @@ -84,114 +84,6 @@ void main() { verify(() => gameBloc.add(const BallLost())).called(1); }, ); - - group('listenWhen', () { - flameBlocTester.testGameWidget( - 'listens when a ball has been lost', - setUp: (game, tester) async { - final controller = LaunchedBallController(ball); - - await ball.add(controller); - await game.ensureAdd(ball); - }, - verify: (game, tester) async { - final controller = - game.descendants().whereType().first; - - final previousState = MockGameState(); - final newState = MockGameState(); - when(() => previousState.balls).thenReturn(3); - when(() => newState.balls).thenReturn(2); - - expect(controller.listenWhen(previousState, newState), isTrue); - }, - ); - - flameBlocTester.testGameWidget( - 'does not listen when a ball has not been lost', - setUp: (game, tester) async { - final controller = LaunchedBallController(ball); - - await ball.add(controller); - await game.ensureAdd(ball); - }, - verify: (game, tester) async { - final controller = - game.descendants().whereType().first; - - final previousState = MockGameState(); - final newState = MockGameState(); - when(() => previousState.balls).thenReturn(3); - when(() => newState.balls).thenReturn(3); - - expect(controller.listenWhen(previousState, newState), isFalse); - }, - ); - }); - - group('onNewState', () { - flameBlocTester.testGameWidget( - 'removes ball', - setUp: (game, tester) async { - final controller = LaunchedBallController(ball); - await ball.add(controller); - await game.ensureAdd(ball); - - final state = MockGameState(); - when(() => state.balls).thenReturn(1); - controller.onNewState(state); - await game.ready(); - }, - verify: (game, tester) async { - expect(game.contains(ball), isFalse); - }, - ); - - flameBlocTester.testGameWidget( - 'spawns a new ball when the ball is not the last one', - setUp: (game, tester) async { - final controller = LaunchedBallController(ball); - await ball.add(controller); - await game.ensureAdd(ball); - - final state = MockGameState(); - when(() => state.balls).thenReturn(1); - - final previousBalls = game.descendants().whereType().toList(); - controller.onNewState(state); - await game.ready(); - - final currentBalls = game.descendants().whereType().toList(); - - expect(currentBalls.contains(ball), isFalse); - expect(currentBalls.length, equals(previousBalls.length)); - }, - ); - - flameBlocTester.testGameWidget( - 'does not spawn a new ball is the last one', - setUp: (game, tester) async { - final controller = LaunchedBallController(ball); - await ball.add(controller); - await game.ensureAdd(ball); - - final state = MockGameState(); - when(() => state.balls).thenReturn(0); - - final previousBalls = game.descendants().whereType().toList(); - controller.onNewState(state); - await game.ready(); - - final currentBalls = game.descendants().whereType(); - - expect(currentBalls.contains(ball), isFalse); - expect( - currentBalls.length, - equals((previousBalls..remove(ball)).length), - ); - }, - ); - }); }); }); } diff --git a/test/game/components/flutter_forest_test.dart b/test/game/components/flutter_forest_test.dart index 60c55be9..b54fe6aa 100644 --- a/test/game/components/flutter_forest_test.dart +++ b/test/game/components/flutter_forest_test.dart @@ -92,17 +92,19 @@ void main() { ); flameBlocTester.testGameWidget( - 'listens when a Bonus.dashNest is added', + 'listens when a Bonus.dashNest and a bonusBall is added', verify: (game, tester) async { final flutterForest = FlutterForest(); const state = GameState( score: 0, balls: 3, + bonusBalls: 1, activatedBonusLetters: [], activatedDashNests: {}, bonusHistory: [GameBonus.dashNest], ); + expect( flutterForest.controller .listenWhen(const GameState.initial(), state), diff --git a/test/game/view/game_hud_test.dart b/test/game/view/game_hud_test.dart index 953b89eb..445355a2 100644 --- a/test/game/view/game_hud_test.dart +++ b/test/game/view/game_hud_test.dart @@ -12,6 +12,7 @@ void main() { const initialState = GameState( score: 10, balls: 2, + bonusBalls: 0, activatedBonusLetters: [], activatedDashNests: {}, bonusHistory: [], diff --git a/test/game/view/pinball_game_page_test.dart b/test/game/view/pinball_game_page_test.dart index f16b8ef1..5c29842c 100644 --- a/test/game/view/pinball_game_page_test.dart +++ b/test/game/view/pinball_game_page_test.dart @@ -87,6 +87,7 @@ void main() { const state = GameState( score: 0, balls: 0, + bonusBalls: 0, activatedBonusLetters: [], activatedDashNests: {}, bonusHistory: [],