test: sparky animatronic and controller

pull/194/head
alestiago 3 years ago
parent 2c8d24d477
commit 1dcfc96666

@ -1,7 +1,5 @@
// ignore_for_file: avoid_renaming_method_parameters
import 'package:flame/components.dart';
import 'package:flame_bloc/flame_bloc.dart';
import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
import 'package:pinball/game/game.dart';

@ -31,7 +31,7 @@ void main() {
matchesGoldenFile('golden/dash_animatronic/middle.png'),
);
game.update(4);
game.update(3);
await tester.pump();
await expectLater(
find.byGame<TestGame>(),

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

@ -0,0 +1,66 @@
// ignore_for_file: cascade_invocations
import 'package:flame/extensions.dart';
import 'package:flame_test/flame_test.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pinball_components/pinball_components.dart';
import '../../helpers/helpers.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
final flameTester = FlameTester(TestGame.new);
group('SparkyAnimatronic', () {
flameTester.testGameWidget(
'renders correctly',
setUp: (game, tester) async {
await game.ensureAdd(SparkyAnimatronic()..playing = true);
game.camera.followVector2(Vector2.zero());
},
verify: (game, tester) async {
await expectLater(
find.byGame<TestGame>(),
matchesGoldenFile('golden/sparky_animatronic/start.png'),
);
game.update(1);
await tester.pump();
await expectLater(
find.byGame<TestGame>(),
matchesGoldenFile('golden/sparky_animatronic/middle.png'),
);
game.update(1);
await tester.pump();
await expectLater(
find.byGame<TestGame>(),
matchesGoldenFile('golden/sparky_animatronic/end.png'),
);
},
);
flameTester.test(
'loads correctly',
(game) async {
final sparkyAnimatronic = SparkyAnimatronic();
await game.ensureAdd(sparkyAnimatronic);
expect(game.contains(sparkyAnimatronic), isTrue);
},
);
flameTester.test(
'stops animating after animation completes',
(game) async {
final sparkyAnimatronic = SparkyAnimatronic();
await game.ensureAdd(sparkyAnimatronic);
sparkyAnimatronic.playing = true;
sparkyAnimatronic.animation?.setToLast();
game.update(1);
expect(sparkyAnimatronic.playing, isFalse);
},
);
});
}

@ -8,6 +8,7 @@ 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';
import 'package:pinball_flame/pinball_flame.dart';
import '../../helpers/helpers.dart';
@ -24,25 +25,49 @@ void main() {
final flameTester = FlameTester(() => EmptyPinballTestGame(assets));
group('SparkyFireZone', () {
flameTester.test(
'loads correctly',
(game) async {
final sparkyFireZone = SparkyFireZone();
await game.ensureAdd(sparkyFireZone);
expect(game.contains(sparkyFireZone), isTrue);
},
);
flameTester.test('loads correctly', (game) async {
final sparkyFireZone = SparkyFireZone();
await game.ensureAdd(sparkyFireZone);
});
group('loads', () {
flameTester.test(
'a SparkyComputer',
(game) async {
final sparkyFireZone = SparkyFireZone();
await game.addFromBlueprint(sparkyFireZone);
await game.ready();
expect(
sparkyFireZone.blueprints.whereType<SparkyComputer>().single,
isNotNull,
);
},
);
flameTester.test(
'a SparkyAnimatronic',
(game) async {
final sparkyFireZone = SparkyFireZone();
await game.addFromBlueprint(sparkyFireZone);
await game.ready();
expect(
game.descendants().whereType<SparkyAnimatronic>().single,
isNotNull,
);
},
);
flameTester.test(
'three SparkyBumper',
(game) async {
final sparkyFireZone = SparkyFireZone();
await game.ensureAdd(sparkyFireZone);
await game.addFromBlueprint(sparkyFireZone);
await game.ready();
expect(
sparkyFireZone.descendants().whereType<SparkyBumper>().length,
game.descendants().whereType<SparkyBumper>().length,
equals(3),
);
},

Loading…
Cancel
Save