test: coverage for multiball

pull/235/head
RuiAlonso 3 years ago
parent 51de4da0f1
commit 638c48d6c7

@ -11,17 +11,33 @@ import 'package:pinball_flame/pinball_flame.dart';
class MultiballGroup extends Component class MultiballGroup extends Component
with Controls<MultiballController>, HasGameRef<PinballGame> { with Controls<MultiballController>, HasGameRef<PinballGame> {
/// {@macro multiball_group_component} /// {@macro multiball_group_component}
MultiballGroup() MultiballGroup() : super() {
: super(
children: [
Multiball.a(),
Multiball.b(),
Multiball.c(),
Multiball.d(),
],
) {
controller = MultiballController(this); controller = MultiballController(this);
} }
/// Bottom left multiball.
late final Multiball multiballA;
/// Center left multiball.
late final Multiball multiballB;
/// Center right multiball.
late final Multiball multiballC;
/// Bottom right multiball.
late final Multiball multiballD;
@override
Future<void> onLoad() async {
await super.onLoad();
await addAll([
multiballA = Multiball.a(),
multiballB = Multiball.b(),
multiballC = Multiball.c(),
multiballD = Multiball.d(),
]);
}
} }
/// {@template multiball_controller} /// {@template multiball_controller}
@ -44,9 +60,10 @@ class MultiballController extends ComponentController<MultiballGroup>
final hasMultiball = state.bonusHistory.contains(GameBonus.dashNest); final hasMultiball = state.bonusHistory.contains(GameBonus.dashNest);
if (hasMultiball) { if (hasMultiball) {
component.children.whereType<Multiball>().forEach((element) { component.multiballA.animate();
element.animate(); component.multiballB.animate();
}); component.multiballC.animate();
component.multiballD.animate();
} }
} }
} }

@ -2,6 +2,7 @@
import 'package:flame_test/flame_test.dart'; import 'package:flame_test/flame_test.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:pinball/game/game.dart'; import 'package:pinball/game/game.dart';
import 'package:pinball_components/pinball_components.dart'; import 'package:pinball_components/pinball_components.dart';
@ -82,7 +83,6 @@ void main() {
); );
}); });
/*
group( group(
'onNewState', 'onNewState',
() { () {
@ -90,21 +90,24 @@ void main() {
'blink multiballs when state changes', 'blink multiballs when state changes',
(game) async { (game) async {
final multiballGroup = MockMultiballGroup(); final multiballGroup = MockMultiballGroup();
final x2multiplier = MockMultiplier(); final multiball = MockMultiball();
final controller = MultiballController(multiballGroup); final controller = MultiballController(multiballGroup);
when(() => multiballGroup.x2multiplier).thenReturn(x2multiplier); when(() => multiballGroup.multiballA).thenReturn(multiball);
when(() => multiballGroup.multiballB).thenReturn(multiball);
when(() => multiballGroup.multiballC).thenReturn(multiball);
when(() => multiballGroup.multiballD).thenReturn(multiball);
when(multiball.animate).thenAnswer((_) async => () {});
controller.onNewState( controller.onNewState(
const GameState.initial() const GameState.initial()
.copyWith(bonusHistory: [GameBonus.dashNest]), .copyWith(bonusHistory: [GameBonus.dashNest]),
); );
verify(() => x2multiplier.toggle(any())).called(1); verify(() => multiball.animate).called(4);
}, },
); );
}, },
); );
*/
}); });
}); });
} }

@ -85,3 +85,7 @@ class MockGameFlowController extends Mock implements GameFlowController {}
class MockAlienBumper extends Mock implements AlienBumper {} class MockAlienBumper extends Mock implements AlienBumper {}
class MockSparkyBumper extends Mock implements SparkyBumper {} class MockSparkyBumper extends Mock implements SparkyBumper {}
class MockMultiball extends Mock implements Multiball {}
class MockMultiballGroup extends Mock implements MultiballGroup {}

Loading…
Cancel
Save