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
with Controls<MultiballController>, HasGameRef<PinballGame> {
/// {@macro multiball_group_component}
MultiballGroup()
: super(
children: [
Multiball.a(),
Multiball.b(),
Multiball.c(),
Multiball.d(),
],
) {
MultiballGroup() : super() {
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}
@ -44,9 +60,10 @@ class MultiballController extends ComponentController<MultiballGroup>
final hasMultiball = state.bonusHistory.contains(GameBonus.dashNest);
if (hasMultiball) {
component.children.whereType<Multiball>().forEach((element) {
element.animate();
});
component.multiballA.animate();
component.multiballB.animate();
component.multiballC.animate();
component.multiballD.animate();
}
}
}

@ -2,6 +2,7 @@
import 'package:flame_test/flame_test.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:pinball/game/game.dart';
import 'package:pinball_components/pinball_components.dart';
@ -82,7 +83,6 @@ void main() {
);
});
/*
group(
'onNewState',
() {
@ -90,21 +90,24 @@ void main() {
'blink multiballs when state changes',
(game) async {
final multiballGroup = MockMultiballGroup();
final x2multiplier = MockMultiplier();
final multiball = MockMultiball();
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(
const GameState.initial()
.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 MockSparkyBumper extends Mock implements SparkyBumper {}
class MockMultiball extends Mock implements Multiball {}
class MockMultiballGroup extends Mock implements MultiballGroup {}

Loading…
Cancel
Save