|
|
@ -1,6 +1,7 @@
|
|
|
|
// ignore_for_file: cascade_invocations
|
|
|
|
// ignore_for_file: cascade_invocations
|
|
|
|
|
|
|
|
|
|
|
|
import 'package:bloc_test/bloc_test.dart';
|
|
|
|
import 'package:bloc_test/bloc_test.dart';
|
|
|
|
|
|
|
|
import 'package:flame/components.dart';
|
|
|
|
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:mocktail/mocktail.dart';
|
|
|
@ -13,32 +14,58 @@ class _MockSpaceshipRampCubit extends Mock implements SpaceshipRampCubit {}
|
|
|
|
void main() {
|
|
|
|
void main() {
|
|
|
|
TestWidgetsFlutterBinding.ensureInitialized();
|
|
|
|
TestWidgetsFlutterBinding.ensureInitialized();
|
|
|
|
final assets = [
|
|
|
|
final assets = [
|
|
|
|
Assets.images.android.bumper.a.lit.keyName,
|
|
|
|
Assets.images.android.ramp.boardOpening.keyName,
|
|
|
|
Assets.images.android.bumper.a.dimmed.keyName,
|
|
|
|
Assets.images.android.ramp.railingForeground.keyName,
|
|
|
|
Assets.images.android.bumper.b.lit.keyName,
|
|
|
|
Assets.images.android.ramp.railingBackground.keyName,
|
|
|
|
Assets.images.android.bumper.b.dimmed.keyName,
|
|
|
|
Assets.images.android.ramp.main.keyName,
|
|
|
|
Assets.images.android.bumper.cow.lit.keyName,
|
|
|
|
Assets.images.android.ramp.arrow.inactive.keyName,
|
|
|
|
Assets.images.android.bumper.cow.dimmed.keyName,
|
|
|
|
Assets.images.android.ramp.arrow.active1.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.ramp.arrow.active2.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.ramp.arrow.active3.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.ramp.arrow.active4.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.ramp.arrow.active5.keyName,
|
|
|
|
];
|
|
|
|
];
|
|
|
|
final flameTester = FlameTester(() => TestGame(assets));
|
|
|
|
final flameTester = FlameTester(() => TestGame(assets));
|
|
|
|
|
|
|
|
|
|
|
|
flameTester.test('closes bloc when removed', (game) async {
|
|
|
|
group('SpaceshipRamp', () {
|
|
|
|
final bloc = _MockSpaceshipRampCubit();
|
|
|
|
flameTester.test(
|
|
|
|
whenListen(
|
|
|
|
'loads correctly',
|
|
|
|
bloc,
|
|
|
|
(game) async {
|
|
|
|
const Stream<SpaceshipRampState>.empty(),
|
|
|
|
final spaceshipRamp = SpaceshipRamp();
|
|
|
|
initialState: const SpaceshipRampState.initial(),
|
|
|
|
await game.ensureAdd(spaceshipRamp);
|
|
|
|
|
|
|
|
expect(game.descendants(), contains(spaceshipRamp));
|
|
|
|
|
|
|
|
},
|
|
|
|
);
|
|
|
|
);
|
|
|
|
when(bloc.close).thenAnswer((_) async {});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final ramp = SpaceshipRamp.test(
|
|
|
|
flameTester.test('closes bloc when removed', (game) async {
|
|
|
|
bloc: bloc,
|
|
|
|
final bloc = _MockSpaceshipRampCubit();
|
|
|
|
);
|
|
|
|
whenListen(
|
|
|
|
|
|
|
|
bloc,
|
|
|
|
|
|
|
|
const Stream<SpaceshipRampState>.empty(),
|
|
|
|
|
|
|
|
initialState: const SpaceshipRampState.initial(),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
when(bloc.close).thenAnswer((_) async {});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final ramp = SpaceshipRamp.test(
|
|
|
|
|
|
|
|
bloc: bloc,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await game.ensureAdd(ramp);
|
|
|
|
|
|
|
|
game.remove(ramp);
|
|
|
|
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
|
await game.ensureAdd(ramp);
|
|
|
|
verify(bloc.close).called(1);
|
|
|
|
game.remove(ramp);
|
|
|
|
});
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
verify(bloc.close).called(1);
|
|
|
|
group('adds', () {
|
|
|
|
|
|
|
|
flameTester.test('new children', (game) async {
|
|
|
|
|
|
|
|
final component = Component();
|
|
|
|
|
|
|
|
final spaceshipRamp = SpaceshipRamp(
|
|
|
|
|
|
|
|
children: [component],
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
await game.ensureAdd(spaceshipRamp);
|
|
|
|
|
|
|
|
expect(spaceshipRamp.children, contains(component));
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|