|
|
@ -7,7 +7,7 @@ import 'package:flame/components.dart';
|
|
|
|
import 'package:flame_test/flame_test.dart';
|
|
|
|
import 'package:flame_test/flame_test.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
import 'package:mockingjay/mockingjay.dart';
|
|
|
|
import 'package:mocktail/mocktail.dart';
|
|
|
|
import 'package:pinball/game/components/android_acres/behaviors/behaviors.dart';
|
|
|
|
import 'package:pinball/game/components/android_acres/behaviors/behaviors.dart';
|
|
|
|
import 'package:pinball/game/game.dart';
|
|
|
|
import 'package:pinball/game/game.dart';
|
|
|
|
import 'package:pinball_components/pinball_components.dart';
|
|
|
|
import 'package:pinball_components/pinball_components.dart';
|
|
|
@ -17,9 +17,6 @@ import '../../../../helpers/helpers.dart';
|
|
|
|
void main() {
|
|
|
|
void main() {
|
|
|
|
TestWidgetsFlutterBinding.ensureInitialized();
|
|
|
|
TestWidgetsFlutterBinding.ensureInitialized();
|
|
|
|
final assets = [
|
|
|
|
final assets = [
|
|
|
|
Assets.images.android.spaceship.saucer.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.spaceship.animatronic.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.spaceship.lightBeam.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.ramp.boardOpening.keyName,
|
|
|
|
Assets.images.android.ramp.boardOpening.keyName,
|
|
|
|
Assets.images.android.ramp.railingForeground.keyName,
|
|
|
|
Assets.images.android.ramp.railingForeground.keyName,
|
|
|
|
Assets.images.android.ramp.railingBackground.keyName,
|
|
|
|
Assets.images.android.ramp.railingBackground.keyName,
|
|
|
@ -32,15 +29,12 @@ void main() {
|
|
|
|
Assets.images.android.ramp.arrow.active5.keyName,
|
|
|
|
Assets.images.android.ramp.arrow.active5.keyName,
|
|
|
|
Assets.images.android.rail.main.keyName,
|
|
|
|
Assets.images.android.rail.main.keyName,
|
|
|
|
Assets.images.android.rail.exit.keyName,
|
|
|
|
Assets.images.android.rail.exit.keyName,
|
|
|
|
Assets.images.android.bumper.a.lit.keyName,
|
|
|
|
Assets.images.score.fiveThousand.keyName,
|
|
|
|
Assets.images.android.bumper.a.dimmed.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.bumper.b.lit.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.bumper.b.dimmed.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.bumper.cow.lit.keyName,
|
|
|
|
|
|
|
|
Assets.images.android.bumper.cow.dimmed.keyName,
|
|
|
|
|
|
|
|
];
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
group('RampShotBehavior', () {
|
|
|
|
group('RampShotBehavior', () {
|
|
|
|
|
|
|
|
const shotPoints = Points.fiveThousand;
|
|
|
|
|
|
|
|
|
|
|
|
late GameBloc gameBloc;
|
|
|
|
late GameBloc gameBloc;
|
|
|
|
|
|
|
|
|
|
|
|
setUp(() {
|
|
|
|
setUp(() {
|
|
|
@ -63,12 +57,11 @@ void main() {
|
|
|
|
'neither add any score or show any score points',
|
|
|
|
'neither add any score or show any score points',
|
|
|
|
setUp: (game, tester) async {
|
|
|
|
setUp: (game, tester) async {
|
|
|
|
final ball = Ball(baseColor: Colors.red);
|
|
|
|
final ball = Ball(baseColor: Colors.red);
|
|
|
|
const shotPoints = 5000;
|
|
|
|
|
|
|
|
final behavior = RampShotBehavior(
|
|
|
|
final behavior = RampShotBehavior(
|
|
|
|
points: shotPoints,
|
|
|
|
points: shotPoints,
|
|
|
|
scorePosition: Vector2.zero(),
|
|
|
|
scorePosition: Vector2.zero(),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
final parent = AndroidAcres.test();
|
|
|
|
final parent = SpaceshipRamp.test();
|
|
|
|
final sensors = [
|
|
|
|
final sensors = [
|
|
|
|
RampSensor.test(
|
|
|
|
RampSensor.test(
|
|
|
|
type: RampSensorType.door,
|
|
|
|
type: RampSensorType.door,
|
|
|
@ -85,11 +78,11 @@ void main() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
await tester.pump();
|
|
|
|
await tester.pump();
|
|
|
|
|
|
|
|
|
|
|
|
final scores = game.descendants().whereType<ScoreText>();
|
|
|
|
final scores = game.descendants().whereType<ScoreComponent>();
|
|
|
|
await game.ready();
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
|
verifyNever(() => gameBloc.add(MultiplierIncreased()));
|
|
|
|
verifyNever(() => gameBloc.add(MultiplierIncreased()));
|
|
|
|
verifyNever(() => gameBloc.add(Scored(points: shotPoints)));
|
|
|
|
verifyNever(() => gameBloc.add(Scored(points: shotPoints.value)));
|
|
|
|
expect(scores.length, 0);
|
|
|
|
expect(scores.length, 0);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
);
|
|
|
@ -99,12 +92,11 @@ void main() {
|
|
|
|
"doesn't increase multiplier neither add any score or shows score points",
|
|
|
|
"doesn't increase multiplier neither add any score or shows score points",
|
|
|
|
setUp: (game, tester) async {
|
|
|
|
setUp: (game, tester) async {
|
|
|
|
final ball = Ball(baseColor: Colors.red);
|
|
|
|
final ball = Ball(baseColor: Colors.red);
|
|
|
|
const shotPoints = 5000;
|
|
|
|
|
|
|
|
final behavior = RampShotBehavior(
|
|
|
|
final behavior = RampShotBehavior(
|
|
|
|
points: shotPoints,
|
|
|
|
points: shotPoints,
|
|
|
|
scorePosition: Vector2.zero(),
|
|
|
|
scorePosition: Vector2.zero(),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
final parent = AndroidAcres.test();
|
|
|
|
final parent = SpaceshipRamp.test();
|
|
|
|
final doorSensor = RampSensor.test(
|
|
|
|
final doorSensor = RampSensor.test(
|
|
|
|
type: RampSensorType.door,
|
|
|
|
type: RampSensorType.door,
|
|
|
|
bloc: RampSensorCubit(),
|
|
|
|
bloc: RampSensorCubit(),
|
|
|
@ -122,11 +114,11 @@ void main() {
|
|
|
|
|
|
|
|
|
|
|
|
await tester.pump();
|
|
|
|
await tester.pump();
|
|
|
|
|
|
|
|
|
|
|
|
final scores = game.descendants().whereType<ScoreText>();
|
|
|
|
final scores = game.descendants().whereType<ScoreComponent>();
|
|
|
|
await game.ready();
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
|
verifyNever(() => gameBloc.add(MultiplierIncreased()));
|
|
|
|
verifyNever(() => gameBloc.add(MultiplierIncreased()));
|
|
|
|
verifyNever(() => gameBloc.add(Scored(points: shotPoints)));
|
|
|
|
verifyNever(() => gameBloc.add(Scored(points: shotPoints.value)));
|
|
|
|
expect(scores.length, 0);
|
|
|
|
expect(scores.length, 0);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
);
|
|
|
@ -136,12 +128,11 @@ void main() {
|
|
|
|
'increase multiplier',
|
|
|
|
'increase multiplier',
|
|
|
|
setUp: (game, tester) async {
|
|
|
|
setUp: (game, tester) async {
|
|
|
|
final ball = Ball(baseColor: Colors.red);
|
|
|
|
final ball = Ball(baseColor: Colors.red);
|
|
|
|
const shotPoints = 5000;
|
|
|
|
|
|
|
|
final behavior = RampShotBehavior(
|
|
|
|
final behavior = RampShotBehavior(
|
|
|
|
points: shotPoints,
|
|
|
|
points: shotPoints,
|
|
|
|
scorePosition: Vector2.zero(),
|
|
|
|
scorePosition: Vector2.zero(),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
final parent = AndroidAcres.test();
|
|
|
|
final parent = SpaceshipRamp.test();
|
|
|
|
final doorSensor = RampSensor.test(
|
|
|
|
final doorSensor = RampSensor.test(
|
|
|
|
type: RampSensorType.door,
|
|
|
|
type: RampSensorType.door,
|
|
|
|
bloc: RampSensorCubit(),
|
|
|
|
bloc: RampSensorCubit(),
|
|
|
@ -155,10 +146,11 @@ void main() {
|
|
|
|
await game.ensureAdd(parent);
|
|
|
|
await game.ensureAdd(parent);
|
|
|
|
await parent.ensureAdd(behavior);
|
|
|
|
await parent.ensureAdd(behavior);
|
|
|
|
|
|
|
|
|
|
|
|
doorSensor.bloc.onDoor(ball);
|
|
|
|
insideSensor.bloc.onDoor(ball);
|
|
|
|
insideSensor.bloc.onInside(ball);
|
|
|
|
insideSensor.bloc.onInside(ball);
|
|
|
|
|
|
|
|
|
|
|
|
await tester.pump();
|
|
|
|
await tester.pump();
|
|
|
|
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
|
verify(() => gameBloc.add(MultiplierIncreased())).called(1);
|
|
|
|
verify(() => gameBloc.add(MultiplierIncreased())).called(1);
|
|
|
|
},
|
|
|
|
},
|
|
|
@ -169,12 +161,11 @@ void main() {
|
|
|
|
'add score and show score points',
|
|
|
|
'add score and show score points',
|
|
|
|
setUp: (game, tester) async {
|
|
|
|
setUp: (game, tester) async {
|
|
|
|
final ball = Ball(baseColor: Colors.red);
|
|
|
|
final ball = Ball(baseColor: Colors.red);
|
|
|
|
const shotPoints = 5000;
|
|
|
|
|
|
|
|
final behavior = RampShotBehavior(
|
|
|
|
final behavior = RampShotBehavior(
|
|
|
|
points: shotPoints,
|
|
|
|
points: shotPoints,
|
|
|
|
scorePosition: Vector2.zero(),
|
|
|
|
scorePosition: Vector2.zero(),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
final parent = AndroidAcres.test();
|
|
|
|
final parent = SpaceshipRamp.test();
|
|
|
|
final doorSensor = RampSensor.test(
|
|
|
|
final doorSensor = RampSensor.test(
|
|
|
|
type: RampSensorType.door,
|
|
|
|
type: RampSensorType.door,
|
|
|
|
bloc: RampSensorCubit(),
|
|
|
|
bloc: RampSensorCubit(),
|
|
|
@ -193,10 +184,10 @@ void main() {
|
|
|
|
|
|
|
|
|
|
|
|
await tester.pump();
|
|
|
|
await tester.pump();
|
|
|
|
|
|
|
|
|
|
|
|
final scores = game.descendants().whereType<ScoreText>();
|
|
|
|
final scores = game.descendants().whereType<ScoreComponent>();
|
|
|
|
await game.ready();
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
|
verify(() => gameBloc.add(Scored(points: shotPoints))).called(1);
|
|
|
|
verify(() => gameBloc.add(Scored(points: shotPoints.value))).called(1);
|
|
|
|
expect(scores.length, 1);
|
|
|
|
expect(scores.length, 1);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
);
|
|
|
|