test: blink behavior

pull/235/head
RuiAlonso 3 years ago
parent 8fa865dae6
commit d1bbef31f1

@ -15,12 +15,12 @@ enum MultiballAnimationState {
}
class MultiballState extends Equatable {
MultiballState({
const MultiballState({
required this.lightState,
required this.animationState,
});
MultiballState.initial()
const MultiballState.initial()
: this(
lightState: MultiballLightState.dimmed,
animationState: MultiballAnimationState.stopped,

@ -21,23 +21,28 @@ void main() {
setUp: (game, tester) async {
final behavior = MultiballBlinkingBehavior();
final bloc = MockMultiballCubit();
final streamController = StreamController<MultiballLightState>();
final streamController = StreamController<MultiballState>();
whenListen(
bloc,
streamController.stream,
initialState: MultiballLightState.dimmed,
initialState: MultiballState.initial(),
);
final multiball = Multiball.test(bloc: bloc);
await multiball.add(behavior);
await game.ensureAdd(multiball);
streamController.add(MultiballLightState.lit);
streamController.add(
MultiballState(
animationState: MultiballAnimationState.animated,
lightState: MultiballLightState.lit,
),
);
await tester.pump();
game.update(0.05);
await streamController.close();
verify(bloc.onDimmed).called(1);
verify(bloc.onBlink).called(1);
},
);
},

@ -1,8 +1,11 @@
// ignore_for_file: cascade_invocations
import 'dart:async';
import 'package:bloc_test/bloc_test.dart';
import 'package:flame_test/flame_test.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:pinball/game/components/multiballs/behaviors/behaviors.dart';
import 'package:pinball/game/game.dart';
import 'package:pinball_components/pinball_components.dart';
@ -33,5 +36,25 @@ void main() {
blocBuilder: () => gameBloc,
assets: assets,
);
flameBlocTester.testGameWidget(
'adds a new ball to the game when all bumpers are active',
setUp: (game, tester) async {
final behavior = MultiballsBehavior();
final parent = Multiballs.test();
final multiballs = [
Multiball.test(bloc: MockMultiballCubit()),
Multiball.test(bloc: MockMultiballCubit()),
Multiball.test(bloc: MockMultiballCubit()),
];
await parent.addAll(multiballs);
await game.ensureAdd(parent);
await parent.ensureAdd(behavior);
for (final multiball in multiballs) {
verify(() => multiball.bloc.onAnimate()).called(1);
}
},
);
});
}

@ -93,3 +93,5 @@ class MockSparkyBumper extends Mock implements SparkyBumper {}
class MockMultiball extends Mock implements Multiball {}
class MockMultiballGroup extends Mock implements Multiballs {}
class MockMultiballCubit extends Mock implements MultiballCubit {}

Loading…
Cancel
Save