refactor: used EmptyPinballGame

pull/147/head
alestiago 4 years ago
parent a25c859d7d
commit e1097a088f

@ -95,10 +95,12 @@ class PinballGame extends Forge2DGame
unawaited(addFromBlueprint(LaunchRamp())); unawaited(addFromBlueprint(LaunchRamp()));
} }
void spawnBall() { Future<void> spawnBall() async {
// TODO(alestiago): Remove once this logic is moved to controller. // TODO(alestiago): Remove once this logic is moved to controller.
final plunger = firstChild<Plunger>(); var plunger = firstChild<Plunger>();
if (plunger == null) return; if (plunger == null) {
await add(plunger = Plunger(compressionDistance: 1));
}
final ball = ControlledBall.launch( final ball = ControlledBall.launch(
theme: theme, theme: theme,
@ -106,7 +108,7 @@ class PinballGame extends Forge2DGame
plunger.body.position.x, plunger.body.position.x,
plunger.body.position.y + Ball.size.y, plunger.body.position.y + Ball.size.y,
); );
add(ball); await add(ball);
} }
} }

@ -9,7 +9,7 @@ import '../../helpers/helpers.dart';
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
final flameTester = FlameTester(PinballGameTest.new); final flameTester = FlameTester(EmptyPinballGameTest.new);
group('Board', () { group('Board', () {
flameTester.test( flameTester.test(
@ -78,7 +78,6 @@ void main() {
flameTester.test( flameTester.test(
'one FlutterForest', 'one FlutterForest',
(game) async { (game) async {
// TODO(alestiago): change to [NestBumpers] once provided.
final board = Board(); final board = Board();
await game.ready(); await game.ready();
await game.ensureAdd(board); await game.ensureAdd(board);

@ -12,16 +12,18 @@ import '../../helpers/helpers.dart';
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
final flameTester = FlameTester(PinballGameTest.new); final flameTester = FlameTester(EmptyPinballGameTest.new);
group('BonusWord', () { group('BonusWord', () {
flameTester.test( flameTester.test(
'loads the letters correctly', 'loads the letters correctly',
(game) async { (game) async {
await game.ready(); final bonusWord = BonusWord(
position: Vector2.zero(),
);
await game.ensureAdd(bonusWord);
final bonusWord = game.children.whereType<BonusWord>().first; final letters = bonusWord.descendants().whereType<BonusLetter>();
final letters = bonusWord.children.whereType<BonusLetter>();
expect(letters.length, equals(GameBloc.bonusWord.length)); expect(letters.length, equals(GameBloc.bonusWord.length));
}, },
); );
@ -118,7 +120,7 @@ void main() {
}); });
group('BonusLetter', () { group('BonusLetter', () {
final flameTester = FlameTester(PinballGameTest.new); final flameTester = FlameTester(EmptyPinballGameTest.new);
flameTester.test( flameTester.test(
'loads correctly', 'loads correctly',
@ -197,8 +199,7 @@ void main() {
late GameBloc gameBloc; late GameBloc gameBloc;
final flameBlocTester = FlameBlocTester<PinballGame, GameBloc>( final flameBlocTester = FlameBlocTester<PinballGame, GameBloc>(
// TODO(alestiago): Use TestGame once BonusLetter has controller. gameBuilder: EmptyPinballGameTest.new,
gameBuilder: PinballGameTest.new,
blocBuilder: () => gameBloc, blocBuilder: () => gameBloc,
); );
@ -214,14 +215,20 @@ void main() {
flameBlocTester.testGameWidget( flameBlocTester.testGameWidget(
'adds BonusLetterActivated to GameBloc when not activated', 'adds BonusLetterActivated to GameBloc when not activated',
setUp: (game, tester) async { setUp: (game, tester) async {
await game.ready(); final bonusWord = BonusWord(
final bonusLetter = game.descendants().whereType<BonusLetter>().first; position: Vector2.zero(),
);
await game.ensureAdd(bonusWord);
bonusLetter.activate(); final bonusLetters =
await game.ready(); game.descendants().whereType<BonusLetter>().toList();
}, for (var index = 0; index < bonusLetters.length; index++) {
verify: (game, tester) async { final bonusLetter = bonusLetters[index];
verify(() => gameBloc.add(const BonusLetterActivated(0))).called(1); bonusLetter.activate();
await game.ready();
verify(() => gameBloc.add(BonusLetterActivated(index))).called(1);
}
}, },
); );
@ -285,25 +292,33 @@ void main() {
); );
flameBlocTester.testGameWidget( flameBlocTester.testGameWidget(
'only listens when there is a change on the letter status', 'listens when there is a change on the letter status',
setUp: (game, tester) async { setUp: (game, tester) async {
await game.ready(); final bonusWord = BonusWord(
final bonusLetter = game.descendants().whereType<BonusLetter>().first; position: Vector2.zero(),
bonusLetter.activate();
},
verify: (game, tester) async {
const state = GameState(
score: 0,
balls: 2,
activatedBonusLetters: [0],
activatedDashNests: {},
bonusHistory: [],
);
final bonusLetter = game.descendants().whereType<BonusLetter>().first;
expect(
bonusLetter.listenWhen(const GameState.initial(), state),
isTrue,
); );
await game.ensureAdd(bonusWord);
final bonusLetters =
game.descendants().whereType<BonusLetter>().toList();
for (var index = 0; index < bonusLetters.length; index++) {
final bonusLetter = bonusLetters[index];
bonusLetter.activate();
await game.ready();
final state = GameState(
score: 0,
balls: 2,
activatedBonusLetters: [index],
activatedDashNests: const {},
bonusHistory: const [],
);
expect(
bonusLetter.listenWhen(const GameState.initial(), state),
isTrue,
);
}
}, },
); );
}); });

@ -13,7 +13,7 @@ import '../../helpers/helpers.dart';
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
final flameTester = FlameTester(PinballGameTest.new); final flameTester = FlameTester(EmptyPinballGameTest.new);
group('BonusBallController', () { group('BonusBallController', () {
late Ball ball; late Ball ball;
@ -67,7 +67,7 @@ void main() {
}); });
final flameBlocTester = FlameBlocTester<PinballGame, GameBloc>( final flameBlocTester = FlameBlocTester<PinballGame, GameBloc>(
gameBuilder: PinballGameTest.new, gameBuilder: EmptyPinballGameTest.new,
blocBuilder: () => gameBloc, blocBuilder: () => gameBloc,
); );
@ -155,13 +155,13 @@ void main() {
await game.ensureAdd(ball); await game.ensureAdd(ball);
final state = MockGameState(); final state = MockGameState();
when(() => state.balls).thenReturn(2); when(() => state.balls).thenReturn(1);
final previousBalls = game.descendants().whereType<Ball>().toList(); final previousBalls = game.descendants().whereType<Ball>().toList();
controller.onNewState(state); controller.onNewState(state);
await game.ready(); await game.ready();
final currentBalls = game.descendants().whereType<Ball>(); final currentBalls = game.descendants().whereType<Ball>().toList();
expect(currentBalls.contains(ball), isFalse); expect(currentBalls.contains(ball), isFalse);
expect(currentBalls.length, equals(previousBalls.length)); expect(currentBalls.length, equals(previousBalls.length));

@ -10,7 +10,7 @@ import '../../helpers/helpers.dart';
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
final flameTester = FlameTester(PinballGameTest.new); final flameTester = FlameTester(EmptyPinballGameTest.new);
group('FlipperController', () { group('FlipperController', () {
group('onKeyEvent', () { group('onKeyEvent', () {

Loading…
Cancel
Save