diff --git a/packages/pinball_components/test/src/components/ball_test.dart b/packages/pinball_components/test/src/components/ball_test.dart index a0d1fe5b..8a166d7b 100644 --- a/packages/pinball_components/test/src/components/ball_test.dart +++ b/packages/pinball_components/test/src/components/ball_test.dart @@ -5,12 +5,22 @@ import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_test/flame_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:pinball_components/pinball_components.dart'; +import 'package:pinball_theme/pinball_theme.dart' as theme; import '../../helpers/helpers.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); - final flameTester = FlameTester(TestGame.new); + final assets = [ + Assets.images.ball.ball.keyName, + Assets.images.ball.flameEffect.keyName, + theme.Assets.images.android.ball.keyName, + theme.Assets.images.dash.ball.keyName, + theme.Assets.images.dino.ball.keyName, + theme.Assets.images.sparky.ball.keyName, + ]; + + final flameTester = FlameTester(() => TestGame(assets)); group('Ball', () { flameTester.test( @@ -24,6 +34,121 @@ void main() { }, ); + group('renders correctly', () { + flameTester.testGameWidget( + 'default', + setUp: (game, tester) async { + final ball = Ball()..initialPosition = Vector2.zero(); + await game.ready(); + await game.ensureAdd(ball); + + await tester.pump(); + + game.camera + ..followVector2(Vector2.zero()) + ..zoom = 8; + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/ball/default.png'), + ); + }, + ); + + flameTester.testGameWidget( + 'android theme', + setUp: (game, tester) async { + final ball = Ball( + spriteAsset: theme.Assets.images.android.ball.keyName, + )..initialPosition = Vector2.zero(); + await game.ready(); + await game.ensureAdd(ball); + + await tester.pump(); + + game.camera + ..followVector2(Vector2.zero()) + ..zoom = 8; + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/ball/android.png'), + ); + }, + ); + + flameTester.testGameWidget( + 'dash theme', + setUp: (game, tester) async { + final ball = Ball( + spriteAsset: theme.Assets.images.dash.ball.keyName, + )..initialPosition = Vector2.zero(); + await game.ready(); + await game.ensureAdd(ball); + + await tester.pump(); + + game.camera + ..followVector2(Vector2.zero()) + ..zoom = 8; + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/ball/dash.png'), + ); + }, + ); + + flameTester.testGameWidget( + 'dino theme', + setUp: (game, tester) async { + final ball = Ball( + spriteAsset: theme.Assets.images.dino.ball.keyName, + )..initialPosition = Vector2.zero(); + await game.ready(); + await game.ensureAdd(ball); + + await tester.pump(); + + game.camera + ..followVector2(Vector2.zero()) + ..zoom = 8; + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/ball/dino.png'), + ); + }, + ); + + flameTester.testGameWidget( + 'sparky theme', + setUp: (game, tester) async { + final ball = Ball( + spriteAsset: theme.Assets.images.sparky.ball.keyName, + )..initialPosition = Vector2.zero(); + await game.ready(); + await game.ensureAdd(ball); + + await tester.pump(); + + game.camera + ..followVector2(Vector2.zero()) + ..zoom = 8; + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/ball/sparky.png'), + ); + }, + ); + }); + group('body', () { flameTester.test( 'is dynamic', diff --git a/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_chomping_behavior_test.dart b/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_chomping_behavior_test.dart index e863dfa4..e408243f 100644 --- a/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_chomping_behavior_test.dart +++ b/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_chomping_behavior_test.dart @@ -12,7 +12,10 @@ import '../../../../helpers/helpers.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); - final flameTester = FlameTester(TestGame.new); + final assets = [ + Assets.images.ball.ball.keyName, + ]; + final flameTester = FlameTester(() => TestGame(assets)); group( 'ChromeDinoChompingBehavior', diff --git a/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_spitting_behavior_test.dart b/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_spitting_behavior_test.dart index cb2071a7..11b362a0 100644 --- a/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_spitting_behavior_test.dart +++ b/packages/pinball_components/test/src/components/chrome_dino/behaviors/chrome_dino_spitting_behavior_test.dart @@ -14,7 +14,10 @@ import '../../../../helpers/helpers.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); - final flameTester = FlameTester(TestGame.new); + final assets = [ + Assets.images.ball.ball.keyName, + ]; + final flameTester = FlameTester(() => TestGame(assets)); group( 'ChromeDinoSpittingBehavior', diff --git a/packages/pinball_components/test/src/components/flipper_test.dart b/packages/pinball_components/test/src/components/flipper_test.dart index 9ab09bf7..3bff1474 100644 --- a/packages/pinball_components/test/src/components/flipper_test.dart +++ b/packages/pinball_components/test/src/components/flipper_test.dart @@ -12,6 +12,7 @@ void main() { final assets = [ Assets.images.flipper.left.keyName, Assets.images.flipper.right.keyName, + Assets.images.ball.ball.keyName, ]; final flameTester = FlameTester(() => TestGame(assets)); diff --git a/packages/pinball_components/test/src/components/golden/ball/android.png b/packages/pinball_components/test/src/components/golden/ball/android.png new file mode 100644 index 00000000..e403c805 Binary files /dev/null and b/packages/pinball_components/test/src/components/golden/ball/android.png differ diff --git a/packages/pinball_components/test/src/components/golden/ball/dash.png b/packages/pinball_components/test/src/components/golden/ball/dash.png new file mode 100644 index 00000000..e403c805 Binary files /dev/null and b/packages/pinball_components/test/src/components/golden/ball/dash.png differ diff --git a/packages/pinball_components/test/src/components/golden/ball/default.png b/packages/pinball_components/test/src/components/golden/ball/default.png new file mode 100644 index 00000000..56f69458 Binary files /dev/null and b/packages/pinball_components/test/src/components/golden/ball/default.png differ diff --git a/packages/pinball_components/test/src/components/golden/ball/dino.png b/packages/pinball_components/test/src/components/golden/ball/dino.png new file mode 100644 index 00000000..8ea10758 Binary files /dev/null and b/packages/pinball_components/test/src/components/golden/ball/dino.png differ diff --git a/packages/pinball_components/test/src/components/golden/ball/sparky.png b/packages/pinball_components/test/src/components/golden/ball/sparky.png new file mode 100644 index 00000000..e403c805 Binary files /dev/null and b/packages/pinball_components/test/src/components/golden/ball/sparky.png differ