From 1dcfc96666bdcb63993ba7d00d2c5f5f74f68099 Mon Sep 17 00:00:00 2001 From: alestiago Date: Thu, 21 Apr 2022 11:08:27 +0100 Subject: [PATCH] test: sparky animatronic and controller --- lib/game/components/sparky_fire_zone.dart | 2 - .../src/components/dash_animatronic_test.dart | 2 +- .../golden/sparky_animatronic/end.png | Bin 0 -> 36188 bytes .../golden/sparky_animatronic/middle.png | Bin 0 -> 37561 bytes .../golden/sparky_animatronic/start.png | Bin 0 -> 36188 bytes .../components/sparky_animatronic_test.dart | 66 ++++++++++++++++++ .../components/sparky_fire_zone_test.dart | 47 ++++++++++--- 7 files changed, 103 insertions(+), 14 deletions(-) create mode 100644 packages/pinball_components/test/src/components/golden/sparky_animatronic/end.png create mode 100644 packages/pinball_components/test/src/components/golden/sparky_animatronic/middle.png create mode 100644 packages/pinball_components/test/src/components/golden/sparky_animatronic/start.png create mode 100644 packages/pinball_components/test/src/components/sparky_animatronic_test.dart diff --git a/lib/game/components/sparky_fire_zone.dart b/lib/game/components/sparky_fire_zone.dart index 6dffac39..466de13b 100644 --- a/lib/game/components/sparky_fire_zone.dart +++ b/lib/game/components/sparky_fire_zone.dart @@ -1,7 +1,5 @@ // ignore_for_file: avoid_renaming_method_parameters -import 'package:flame/components.dart'; -import 'package:flame_bloc/flame_bloc.dart'; import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flutter/material.dart'; import 'package:pinball/game/game.dart'; diff --git a/packages/pinball_components/test/src/components/dash_animatronic_test.dart b/packages/pinball_components/test/src/components/dash_animatronic_test.dart index e4b31ca6..11c34749 100644 --- a/packages/pinball_components/test/src/components/dash_animatronic_test.dart +++ b/packages/pinball_components/test/src/components/dash_animatronic_test.dart @@ -31,7 +31,7 @@ void main() { matchesGoldenFile('golden/dash_animatronic/middle.png'), ); - game.update(4); + game.update(3); await tester.pump(); await expectLater( find.byGame(), diff --git a/packages/pinball_components/test/src/components/golden/sparky_animatronic/end.png b/packages/pinball_components/test/src/components/golden/sparky_animatronic/end.png new file mode 100644 index 0000000000000000000000000000000000000000..a16672d7f3c24439c504292fe5c69e241af8b5a6 GIT binary patch literal 36188 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, + matchesGoldenFile('golden/sparky_animatronic/start.png'), + ); + + game.update(1); + await tester.pump(); + await expectLater( + find.byGame(), + matchesGoldenFile('golden/sparky_animatronic/middle.png'), + ); + + game.update(1); + await tester.pump(); + await expectLater( + find.byGame(), + matchesGoldenFile('golden/sparky_animatronic/end.png'), + ); + }, + ); + flameTester.test( + 'loads correctly', + (game) async { + final sparkyAnimatronic = SparkyAnimatronic(); + await game.ensureAdd(sparkyAnimatronic); + + expect(game.contains(sparkyAnimatronic), isTrue); + }, + ); + + flameTester.test( + 'stops animating after animation completes', + (game) async { + final sparkyAnimatronic = SparkyAnimatronic(); + await game.ensureAdd(sparkyAnimatronic); + + sparkyAnimatronic.playing = true; + sparkyAnimatronic.animation?.setToLast(); + game.update(1); + + expect(sparkyAnimatronic.playing, isFalse); + }, + ); + }); +} diff --git a/test/game/components/sparky_fire_zone_test.dart b/test/game/components/sparky_fire_zone_test.dart index 4c3fcdb9..02bc785f 100644 --- a/test/game/components/sparky_fire_zone_test.dart +++ b/test/game/components/sparky_fire_zone_test.dart @@ -8,6 +8,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; import 'package:pinball/game/game.dart'; import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_flame/pinball_flame.dart'; import '../../helpers/helpers.dart'; @@ -24,25 +25,49 @@ void main() { final flameTester = FlameTester(() => EmptyPinballTestGame(assets)); group('SparkyFireZone', () { - flameTester.test( - 'loads correctly', - (game) async { - final sparkyFireZone = SparkyFireZone(); - await game.ensureAdd(sparkyFireZone); - - expect(game.contains(sparkyFireZone), isTrue); - }, - ); + flameTester.test('loads correctly', (game) async { + final sparkyFireZone = SparkyFireZone(); + await game.ensureAdd(sparkyFireZone); + }); group('loads', () { + flameTester.test( + 'a SparkyComputer', + (game) async { + final sparkyFireZone = SparkyFireZone(); + await game.addFromBlueprint(sparkyFireZone); + await game.ready(); + + expect( + sparkyFireZone.blueprints.whereType().single, + isNotNull, + ); + }, + ); + + flameTester.test( + 'a SparkyAnimatronic', + (game) async { + final sparkyFireZone = SparkyFireZone(); + await game.addFromBlueprint(sparkyFireZone); + await game.ready(); + + expect( + game.descendants().whereType().single, + isNotNull, + ); + }, + ); + flameTester.test( 'three SparkyBumper', (game) async { final sparkyFireZone = SparkyFireZone(); - await game.ensureAdd(sparkyFireZone); + await game.addFromBlueprint(sparkyFireZone); + await game.ready(); expect( - sparkyFireZone.descendants().whereType().length, + game.descendants().whereType().length, equals(3), ); },