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

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

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

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

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

Loading…
Cancel
Save