From ced092eeb48d1039a8e41529edb45479ccd86f50 Mon Sep 17 00:00:00 2001 From: alestiago Date: Wed, 20 Apr 2022 14:08:28 +0100 Subject: [PATCH] feat: updated tests --- .../test/src/components/camera_zoom_test.dart | 2 +- .../components/flutter_sign_post_test.dart | 117 +++++++++++++++--- 2 files changed, 104 insertions(+), 15 deletions(-) diff --git a/packages/pinball_components/test/src/components/camera_zoom_test.dart b/packages/pinball_components/test/src/components/camera_zoom_test.dart index 00f43847..420f908c 100644 --- a/packages/pinball_components/test/src/components/camera_zoom_test.dart +++ b/packages/pinball_components/test/src/components/camera_zoom_test.dart @@ -17,7 +17,7 @@ void main() { game.camera.followVector2(Vector2.zero()); game.camera.zoom = 10; final sprite = await game.loadSprite( - Assets.images.flutterSignPost.keyName, + Assets.images.signPost.inactive.keyName, ); await game.add( diff --git a/packages/pinball_components/test/src/components/flutter_sign_post_test.dart b/packages/pinball_components/test/src/components/flutter_sign_post_test.dart index 0dee4482..7dcc30a9 100644 --- a/packages/pinball_components/test/src/components/flutter_sign_post_test.dart +++ b/packages/pinball_components/test/src/components/flutter_sign_post_test.dart @@ -1,34 +1,31 @@ // ignore_for_file: cascade_invocations -import 'package:flame_forge2d/flame_forge2d.dart'; +import 'package:flame/components.dart'; import 'package:flame_test/flame_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:pinball_components/pinball_components.dart'; import '../../helpers/helpers.dart'; +// TODO(alisonryan): Refactor loading assets in test with +// https://github.com/VGVentures/pinball/pull/204 + void main() { TestWidgetsFlutterBinding.ensureInitialized(); final flameTester = FlameTester(TestGame.new); group('FlutterSignPost', () { - flameTester.testGameWidget( - 'renders correctly', - setUp: (game, tester) async { - await game.ensureAdd(FlutterSignPost()); - game.camera.followVector2(Vector2.zero()); - }, - verify: (game, tester) async { - await expectLater( - find.byGame(), - matchesGoldenFile('golden/flutter-sign-post.png'), - ); - }, - ); + final assets = [ + Assets.images.signPost.inactive.keyName, + Assets.images.signPost.active1.keyName, + Assets.images.signPost.active2.keyName, + Assets.images.signPost.active3.keyName, + ]; flameTester.test( 'loads correctly', (game) async { + await game.images.loadAll(assets); final flutterSignPost = FlutterSignPost(); await game.ready(); await game.ensureAdd(flutterSignPost); @@ -36,5 +33,97 @@ void main() { expect(game.contains(flutterSignPost), isTrue); }, ); + + group('renders correctly', () { + flameTester.testGameWidget( + 'inactive sprite', + setUp: (game, tester) async { + await game.images.loadAll(assets); + await game.ensureAdd(FlutterSignPost()); + game.camera.followVector2(Vector2.zero()); + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/flutter-sign-post__inactive.png'), + ); + }, + ); + + flameTester.testGameWidget( + 'active1 sprite', + setUp: (game, tester) async { + await game.images.loadAll(assets); + await game.ensureAdd(FlutterSignPost()..progress()); + game.camera.followVector2(Vector2.zero()); + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/flutter-sign-post__active1.png'), + ); + }, + ); + + flameTester.testGameWidget( + 'active2 sprite', + setUp: (game, tester) async { + await game.images.loadAll(assets); + await game.ensureAdd( + FlutterSignPost() + ..progress() + ..progress(), + ); + game.camera.followVector2(Vector2.zero()); + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/flutter-sign-post__active2.png'), + ); + }, + ); + + flameTester.testGameWidget( + 'active3 sprite', + setUp: (game, tester) async { + await game.images.loadAll(assets); + await game.ensureAdd( + FlutterSignPost() + ..progress() + ..progress() + ..progress(), + ); + game.camera.followVector2(Vector2.zero()); + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile('golden/flutter-sign-post__active3.png'), + ); + }, + ); + }); + + flameTester.test( + 'progress changes correctly between four sprites', + (game) async { + await game.images.loadAll(assets); + final flutterSignPost = FlutterSignPost(); + await game.ready(); + await game.ensureAdd(flutterSignPost); + + final spriteComponent = + flutterSignPost.firstChild()!; + final sprites = {}; + + for (var i = 0; i < 4; i++) { + sprites.add(spriteComponent.sprite!); + flutterSignPost.progress(); + } + + expect(sprites.length, equals(4)); + }, + ); }); }