test: refactor score texts

pull/276/head
RuiAlonso 3 years ago
parent 45833d2e87
commit 253feb5c23

@ -115,14 +115,7 @@ extension PinballGameAssetsX on PinballGame {
images.load(components.Assets.images.multiplier.x5.dimmed.keyName), images.load(components.Assets.images.multiplier.x5.dimmed.keyName),
images.load(components.Assets.images.multiplier.x6.lit.keyName), images.load(components.Assets.images.multiplier.x6.lit.keyName),
images.load(components.Assets.images.multiplier.x6.dimmed.keyName), images.load(components.Assets.images.multiplier.x6.dimmed.keyName),
images.load(components.Assets.images.score.points1m.keyName),
images.load(components.Assets.images.score.points1m2.keyName),
images.load(components.Assets.images.score.points2m.keyName),
images.load(components.Assets.images.score.points3m.keyName),
images.load(components.Assets.images.score.points4m.keyName),
images.load(components.Assets.images.score.points5k.keyName), images.load(components.Assets.images.score.points5k.keyName),
images.load(components.Assets.images.score.points5m.keyName),
images.load(components.Assets.images.score.points6m.keyName),
images.load(components.Assets.images.score.points10k.keyName), images.load(components.Assets.images.score.points10k.keyName),
images.load(components.Assets.images.score.points15k.keyName), images.load(components.Assets.images.score.points15k.keyName),
images.load(components.Assets.images.score.points20k.keyName), images.load(components.Assets.images.score.points20k.keyName),
@ -138,6 +131,13 @@ extension PinballGameAssetsX on PinballGame {
images.load(components.Assets.images.score.points400k.keyName), images.load(components.Assets.images.score.points400k.keyName),
images.load(components.Assets.images.score.points600k.keyName), images.load(components.Assets.images.score.points600k.keyName),
images.load(components.Assets.images.score.points800k.keyName), images.load(components.Assets.images.score.points800k.keyName),
images.load(components.Assets.images.score.points1m.keyName),
images.load(components.Assets.images.score.points1m2.keyName),
images.load(components.Assets.images.score.points2m.keyName),
images.load(components.Assets.images.score.points3m.keyName),
images.load(components.Assets.images.score.points4m.keyName),
images.load(components.Assets.images.score.points5m.keyName),
images.load(components.Assets.images.score.points6m.keyName),
images.load(dashTheme.leaderboardIcon.keyName), images.load(dashTheme.leaderboardIcon.keyName),
images.load(sparkyTheme.leaderboardIcon.keyName), images.load(sparkyTheme.leaderboardIcon.keyName),
images.load(androidTheme.leaderboardIcon.keyName), images.load(androidTheme.leaderboardIcon.keyName),

@ -3,29 +3,56 @@
import 'package:flame/components.dart'; import 'package:flame/components.dart';
import 'package:flame/effects.dart'; import 'package:flame/effects.dart';
import 'package:flame_test/flame_test.dart'; import 'package:flame_test/flame_test.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
import '../../helpers/helpers.dart'; import '../../helpers/helpers.dart';
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized();
final assets = [
Assets.images.score.points1m.keyName,
Assets.images.score.points1m2.keyName,
Assets.images.score.points2m.keyName,
Assets.images.score.points3m.keyName,
Assets.images.score.points4m.keyName,
Assets.images.score.points5k.keyName,
Assets.images.score.points5m.keyName,
Assets.images.score.points6m.keyName,
Assets.images.score.points10k.keyName,
Assets.images.score.points15k.keyName,
Assets.images.score.points20k.keyName,
Assets.images.score.points25k.keyName,
Assets.images.score.points30k.keyName,
Assets.images.score.points40k.keyName,
Assets.images.score.points50k.keyName,
Assets.images.score.points60k.keyName,
Assets.images.score.points80k.keyName,
Assets.images.score.points100k.keyName,
Assets.images.score.points120k.keyName,
Assets.images.score.points200k.keyName,
Assets.images.score.points400k.keyName,
Assets.images.score.points600k.keyName,
Assets.images.score.points800k.keyName,
];
group('ScoreText', () { group('ScoreText', () {
final flameTester = FlameTester(TestGame.new); final flameTester = FlameTester(() => TestGame(assets));
flameTester.testGameWidget( flameTester.testGameWidget(
'renders correctly', 'renders correctly',
setUp: (game, tester) async { setUp: (game, tester) async {
await game.images.loadAll(assets);
game.camera.followVector2(Vector2.zero()); game.camera.followVector2(Vector2.zero());
await game.ensureAdd( await game.ensureAdd(
ScoreText( ScoreComponent(
score: Score.points_6m, score: Score.points_6m,
position: Vector2.zero(), position: Vector2.zero(),
), ),
); );
}, },
verify: (game, tester) async { verify: (game, tester) async {
final texts = game.descendants().whereType<TextComponent>().length; final texts = game.descendants().whereType<SpriteComponent>().length;
expect(texts, equals(1)); expect(texts, equals(1));
}, },
); );
@ -33,9 +60,10 @@ void main() {
flameTester.testGameWidget( flameTester.testGameWidget(
'has a movement effect', 'has a movement effect',
setUp: (game, tester) async { setUp: (game, tester) async {
await game.images.loadAll(assets);
game.camera.followVector2(Vector2.zero()); game.camera.followVector2(Vector2.zero());
await game.ensureAdd( await game.ensureAdd(
ScoreText( ScoreComponent(
score: Score.points_6m, score: Score.points_6m,
position: Vector2.zero(), position: Vector2.zero(),
), ),
@ -45,17 +73,20 @@ void main() {
await tester.pump(); await tester.pump();
}, },
verify: (game, tester) async { verify: (game, tester) async {
final text = game.descendants().whereType<TextComponent>().first; final text = game.descendants().whereType<SpriteComponent>().first;
expect(text.firstChild<MoveEffect>(), isNotNull); expect(text.firstChild<MoveEffect>(), isNotNull);
}, },
); );
// TODO(ruimiguel): review why this test is failing after ScoreComponent
// refactor.
flameTester.testGameWidget( flameTester.testGameWidget(
'is removed once finished', 'is removed once finished',
setUp: (game, tester) async { setUp: (game, tester) async {
await game.images.loadAll(assets);
game.camera.followVector2(Vector2.zero()); game.camera.followVector2(Vector2.zero());
await game.ensureAdd( await game.ensureAdd(
ScoreText( ScoreComponent(
score: Score.points_6m, score: Score.points_6m,
position: Vector2.zero(), position: Vector2.zero(),
), ),

@ -17,6 +17,33 @@ class _TestBodyComponent extends BodyComponent {
} }
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized();
final assets = [
Assets.images.score.points1m.keyName,
Assets.images.score.points1m2.keyName,
Assets.images.score.points2m.keyName,
Assets.images.score.points3m.keyName,
Assets.images.score.points4m.keyName,
Assets.images.score.points5k.keyName,
Assets.images.score.points5m.keyName,
Assets.images.score.points6m.keyName,
Assets.images.score.points10k.keyName,
Assets.images.score.points15k.keyName,
Assets.images.score.points20k.keyName,
Assets.images.score.points25k.keyName,
Assets.images.score.points30k.keyName,
Assets.images.score.points40k.keyName,
Assets.images.score.points50k.keyName,
Assets.images.score.points60k.keyName,
Assets.images.score.points80k.keyName,
Assets.images.score.points100k.keyName,
Assets.images.score.points120k.keyName,
Assets.images.score.points200k.keyName,
Assets.images.score.points400k.keyName,
Assets.images.score.points600k.keyName,
Assets.images.score.points800k.keyName,
];
group('ScoringBehavior', () { group('ScoringBehavior', () {
group('beginContact', () { group('beginContact', () {
late GameBloc bloc; late GameBloc bloc;
@ -50,13 +77,14 @@ void main() {
whenListen(bloc, Stream.value(state), initialState: state); whenListen(bloc, Stream.value(state), initialState: state);
return bloc; return bloc;
}, },
assets: assets,
); );
flameBlocTester.testGameWidget( flameBlocTester.testGameWidget(
'emits Scored event with points', 'emits Scored event with points',
setUp: (game, tester) async { setUp: (game, tester) async {
const points = 20; const points = Score.points_6m;
final scoringBehavior = ScoringBehavior(points: Score.points_6m); final scoringBehavior = ScoringBehavior(points: points);
await parent.add(scoringBehavior); await parent.add(scoringBehavior);
await game.ensureAdd(parent); await game.ensureAdd(parent);
@ -64,7 +92,7 @@ void main() {
verify( verify(
() => bloc.add( () => bloc.add(
const Scored(points: points), Scored(points: points.value),
), ),
).called(1); ).called(1);
}, },
@ -87,18 +115,19 @@ void main() {
flameBlocTester.testGameWidget( flameBlocTester.testGameWidget(
"adds a ScoreText component at Ball's position with points", "adds a ScoreText component at Ball's position with points",
setUp: (game, tester) async { setUp: (game, tester) async {
final scoringBehavior = ScoringBehavior(points: Score.points_6m); const points = Score.points_6m;
final scoringBehavior = ScoringBehavior(points: points);
await parent.add(scoringBehavior); await parent.add(scoringBehavior);
await game.ensureAdd(parent); await game.ensureAdd(parent);
scoringBehavior.beginContact(ball, MockContact()); scoringBehavior.beginContact(ball, MockContact());
await game.ready(); await game.ready();
final scoreText = game.descendants().whereType<ScoreText>(); final scoreText = game.descendants().whereType<ScoreComponent>();
expect(scoreText.length, equals(1)); expect(scoreText.length, equals(1));
expect( expect(
scoreText.first.score, scoreText.first.score,
equals(Score.points_6m), equals(points),
); );
expect( expect(
scoreText.first.position, scoreText.first.position,

Loading…
Cancel
Save