mirror of https://github.com/flutter/pinball.git
parent
9e71d746fc
commit
6dd5c2c73f
@ -1 +1 @@
|
|||||||
export 'ramp_contact_behavior.dart';
|
export 'ramp_ball_contact_behavior.dart';
|
||||||
|
@ -1,244 +0,0 @@
|
|||||||
// ignore_for_file: cascade_invocations
|
|
||||||
|
|
||||||
import 'package:bloc_test/bloc_test.dart';
|
|
||||||
import 'package:flame/components.dart';
|
|
||||||
import 'package:flame_test/flame_test.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
|
||||||
import 'package:mocktail/mocktail.dart';
|
|
||||||
import 'package:pinball_components/pinball_components.dart';
|
|
||||||
import 'package:pinball_flame/pinball_flame.dart';
|
|
||||||
|
|
||||||
import '../../helpers/helpers.dart';
|
|
||||||
|
|
||||||
class _MockSpaceshipRampCubit extends Mock implements SpaceshipRampCubit {}
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
TestWidgetsFlutterBinding.ensureInitialized();
|
|
||||||
final assets = [
|
|
||||||
Assets.images.android.ramp.boardOpening.keyName,
|
|
||||||
Assets.images.android.ramp.railingForeground.keyName,
|
|
||||||
Assets.images.android.ramp.railingBackground.keyName,
|
|
||||||
Assets.images.android.ramp.main.keyName,
|
|
||||||
Assets.images.android.ramp.arrow.inactive.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));
|
|
||||||
|
|
||||||
group('SpaceshipRamp', () {
|
|
||||||
flameTester.test('loads correctly', (game) async {
|
|
||||||
final component = SpaceshipRamp();
|
|
||||||
await game.ensureAdd(component);
|
|
||||||
expect(game.contains(component), isTrue);
|
|
||||||
});
|
|
||||||
|
|
||||||
group('renders correctly', () {
|
|
||||||
const goldenFilePath = 'golden/spaceship_ramp/';
|
|
||||||
final centerForSpaceshipRamp = Vector2(-13, -55);
|
|
||||||
|
|
||||||
flameTester.testGameWidget(
|
|
||||||
'inactive sprite',
|
|
||||||
setUp: (game, tester) async {
|
|
||||||
await game.images.loadAll(assets);
|
|
||||||
final component = SpaceshipRamp();
|
|
||||||
final canvas = ZCanvasComponent(children: [component]);
|
|
||||||
await game.ensureAdd(canvas);
|
|
||||||
|
|
||||||
await tester.pump();
|
|
||||||
|
|
||||||
expect(
|
|
||||||
component.children.whereType<SpriteGroupComponent>().first.current,
|
|
||||||
SpaceshipRampArrowSpriteState.inactive,
|
|
||||||
);
|
|
||||||
|
|
||||||
game.camera.followVector2(centerForSpaceshipRamp);
|
|
||||||
},
|
|
||||||
verify: (game, tester) async {
|
|
||||||
await expectLater(
|
|
||||||
find.byGame<TestGame>(),
|
|
||||||
matchesGoldenFile('${goldenFilePath}inactive.png'),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
flameTester.testGameWidget(
|
|
||||||
'active1 sprite',
|
|
||||||
setUp: (game, tester) async {
|
|
||||||
await game.images.loadAll(assets);
|
|
||||||
final component = SpaceshipRamp();
|
|
||||||
final canvas = ZCanvasComponent(children: [component]);
|
|
||||||
await game.ensureAdd(canvas);
|
|
||||||
|
|
||||||
component.progress();
|
|
||||||
await tester.pump();
|
|
||||||
|
|
||||||
expect(
|
|
||||||
component.children.whereType<SpriteGroupComponent>().first.current,
|
|
||||||
SpaceshipRampArrowSpriteState.active1,
|
|
||||||
);
|
|
||||||
|
|
||||||
game.camera.followVector2(centerForSpaceshipRamp);
|
|
||||||
},
|
|
||||||
verify: (game, tester) async {
|
|
||||||
await expectLater(
|
|
||||||
find.byGame<TestGame>(),
|
|
||||||
matchesGoldenFile('${goldenFilePath}active1.png'),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
flameTester.testGameWidget(
|
|
||||||
'active2 sprite',
|
|
||||||
setUp: (game, tester) async {
|
|
||||||
await game.images.loadAll(assets);
|
|
||||||
final component = SpaceshipRamp();
|
|
||||||
final canvas = ZCanvasComponent(children: [component]);
|
|
||||||
await game.ensureAdd(canvas);
|
|
||||||
|
|
||||||
component
|
|
||||||
..progress()
|
|
||||||
..progress();
|
|
||||||
await tester.pump();
|
|
||||||
|
|
||||||
expect(
|
|
||||||
component.children.whereType<SpriteGroupComponent>().first.current,
|
|
||||||
SpaceshipRampArrowSpriteState.active2,
|
|
||||||
);
|
|
||||||
|
|
||||||
game.camera.followVector2(centerForSpaceshipRamp);
|
|
||||||
},
|
|
||||||
verify: (game, tester) async {
|
|
||||||
await expectLater(
|
|
||||||
find.byGame<TestGame>(),
|
|
||||||
matchesGoldenFile('${goldenFilePath}active2.png'),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
flameTester.testGameWidget(
|
|
||||||
'active3 sprite',
|
|
||||||
setUp: (game, tester) async {
|
|
||||||
await game.images.loadAll(assets);
|
|
||||||
final component = SpaceshipRamp();
|
|
||||||
final canvas = ZCanvasComponent(children: [component]);
|
|
||||||
await game.ensureAdd(canvas);
|
|
||||||
|
|
||||||
component
|
|
||||||
..progress()
|
|
||||||
..progress()
|
|
||||||
..progress();
|
|
||||||
await tester.pump();
|
|
||||||
|
|
||||||
expect(
|
|
||||||
component.children.whereType<SpriteGroupComponent>().first.current,
|
|
||||||
SpaceshipRampArrowSpriteState.active3,
|
|
||||||
);
|
|
||||||
|
|
||||||
game.camera.followVector2(centerForSpaceshipRamp);
|
|
||||||
},
|
|
||||||
verify: (game, tester) async {
|
|
||||||
await expectLater(
|
|
||||||
find.byGame<TestGame>(),
|
|
||||||
matchesGoldenFile('${goldenFilePath}active3.png'),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
flameTester.testGameWidget(
|
|
||||||
'active4 sprite',
|
|
||||||
setUp: (game, tester) async {
|
|
||||||
await game.images.loadAll(assets);
|
|
||||||
final component = SpaceshipRamp();
|
|
||||||
final canvas = ZCanvasComponent(children: [component]);
|
|
||||||
await game.ensureAdd(canvas);
|
|
||||||
|
|
||||||
component
|
|
||||||
..progress()
|
|
||||||
..progress()
|
|
||||||
..progress()
|
|
||||||
..progress();
|
|
||||||
await tester.pump();
|
|
||||||
|
|
||||||
expect(
|
|
||||||
component.children.whereType<SpriteGroupComponent>().first.current,
|
|
||||||
SpaceshipRampArrowSpriteState.active4,
|
|
||||||
);
|
|
||||||
|
|
||||||
game.camera.followVector2(centerForSpaceshipRamp);
|
|
||||||
},
|
|
||||||
verify: (game, tester) async {
|
|
||||||
await expectLater(
|
|
||||||
find.byGame<TestGame>(),
|
|
||||||
matchesGoldenFile('${goldenFilePath}active4.png'),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
flameTester.testGameWidget(
|
|
||||||
'active5 sprite',
|
|
||||||
setUp: (game, tester) async {
|
|
||||||
await game.images.loadAll(assets);
|
|
||||||
final component = SpaceshipRamp();
|
|
||||||
final canvas = ZCanvasComponent(children: [component]);
|
|
||||||
await game.ensureAdd(canvas);
|
|
||||||
|
|
||||||
component
|
|
||||||
..progress()
|
|
||||||
..progress()
|
|
||||||
..progress()
|
|
||||||
..progress()
|
|
||||||
..progress();
|
|
||||||
await tester.pump();
|
|
||||||
|
|
||||||
expect(
|
|
||||||
component.children.whereType<SpriteGroupComponent>().first.current,
|
|
||||||
SpaceshipRampArrowSpriteState.active5,
|
|
||||||
);
|
|
||||||
|
|
||||||
game.camera.followVector2(centerForSpaceshipRamp);
|
|
||||||
},
|
|
||||||
verify: (game, tester) async {
|
|
||||||
await expectLater(
|
|
||||||
find.byGame<TestGame>(),
|
|
||||||
matchesGoldenFile('${goldenFilePath}active5.png'),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
flameTester.test('closes bloc when removed', (game) async {
|
|
||||||
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();
|
|
||||||
|
|
||||||
verify(bloc.close).called(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
group('adds', () {
|
|
||||||
flameTester.test('new children', (game) async {
|
|
||||||
final component = Component();
|
|
||||||
final ramp = SpaceshipRamp.test(
|
|
||||||
bloc: _MockSpaceshipRampCubit(),
|
|
||||||
children: [component],
|
|
||||||
);
|
|
||||||
await game.ensureAdd(ramp);
|
|
||||||
expect(ramp.children, contains(component));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
Loading…
Reference in new issue