|
|
@ -36,6 +36,7 @@ class _TestGame extends Forge2DGame with HasTappables {
|
|
|
|
Future<void> pump(
|
|
|
|
Future<void> pump(
|
|
|
|
Iterable<Component> children, {
|
|
|
|
Iterable<Component> children, {
|
|
|
|
PinballAudioPlayer? pinballAudioPlayer,
|
|
|
|
PinballAudioPlayer? pinballAudioPlayer,
|
|
|
|
|
|
|
|
PlatformHelper? platformHelper,
|
|
|
|
}) async {
|
|
|
|
}) async {
|
|
|
|
return ensureAdd(
|
|
|
|
return ensureAdd(
|
|
|
|
FlameMultiBlocProvider(
|
|
|
|
FlameMultiBlocProvider(
|
|
|
@ -57,7 +58,7 @@ class _TestGame extends Forge2DGame with HasTappables {
|
|
|
|
_MockAppLocalizations(),
|
|
|
|
_MockAppLocalizations(),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
FlameProvider<PlatformHelper>.value(
|
|
|
|
FlameProvider<PlatformHelper>.value(
|
|
|
|
_MockPlatformHelper(),
|
|
|
|
platformHelper ?? PlatformHelper(),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
],
|
|
|
|
children: children,
|
|
|
|
children: children,
|
|
|
@ -75,10 +76,9 @@ class _MockLeaderboardRepository extends Mock implements LeaderboardRepository {
|
|
|
|
|
|
|
|
|
|
|
|
class _MockShareRepository extends Mock implements ShareRepository {}
|
|
|
|
class _MockShareRepository extends Mock implements ShareRepository {}
|
|
|
|
|
|
|
|
|
|
|
|
class _MockPlatformHelper extends Mock implements PlatformHelper {
|
|
|
|
class _MockPlatformHelper extends Mock implements PlatformHelper {}
|
|
|
|
@override
|
|
|
|
|
|
|
|
bool get isMobile => false;
|
|
|
|
class _MockPlungerCubit extends Mock implements PlungerCubit {}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class _MockAppLocalizations extends Mock implements AppLocalizations {
|
|
|
|
class _MockAppLocalizations extends Mock implements AppLocalizations {
|
|
|
|
@override
|
|
|
|
@override
|
|
|
@ -196,7 +196,6 @@ void main() {
|
|
|
|
await flipper.ensureAdd(behavior);
|
|
|
|
await flipper.ensureAdd(behavior);
|
|
|
|
|
|
|
|
|
|
|
|
expect(state.status, GameStatus.gameOver);
|
|
|
|
expect(state.status, GameStatus.gameOver);
|
|
|
|
|
|
|
|
|
|
|
|
component.onNewState(state);
|
|
|
|
component.onNewState(state);
|
|
|
|
await game.ready();
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
@ -219,13 +218,18 @@ void main() {
|
|
|
|
entries: const [],
|
|
|
|
entries: const [],
|
|
|
|
);
|
|
|
|
);
|
|
|
|
final plunger = Plunger.test();
|
|
|
|
final plunger = Plunger.test();
|
|
|
|
final behavior = PlungerKeyControllingBehavior();
|
|
|
|
await game.pump(
|
|
|
|
|
|
|
|
[component, backbox, plunger],
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
await game.pump([component, backbox, plunger]);
|
|
|
|
await plunger.ensureAdd(
|
|
|
|
await plunger.ensureAdd(behavior);
|
|
|
|
FlameBlocProvider<PlungerCubit, PlungerState>(
|
|
|
|
|
|
|
|
create: PlungerCubit.new,
|
|
|
|
|
|
|
|
children: [PlungerKeyControllingBehavior()],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
expect(state.status, GameStatus.gameOver);
|
|
|
|
expect(state.status, GameStatus.gameOver);
|
|
|
|
|
|
|
|
|
|
|
|
component.onNewState(state);
|
|
|
|
component.onNewState(state);
|
|
|
|
await game.ready();
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
@ -236,6 +240,43 @@ void main() {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
flameTester.test(
|
|
|
|
|
|
|
|
'removes PlungerPullingBehavior from Plunger',
|
|
|
|
|
|
|
|
(game) async {
|
|
|
|
|
|
|
|
final component = GameBlocStatusListener();
|
|
|
|
|
|
|
|
final leaderboardRepository = _MockLeaderboardRepository();
|
|
|
|
|
|
|
|
final shareRepository = _MockShareRepository();
|
|
|
|
|
|
|
|
final backbox = Backbox(
|
|
|
|
|
|
|
|
leaderboardRepository: leaderboardRepository,
|
|
|
|
|
|
|
|
shareRepository: shareRepository,
|
|
|
|
|
|
|
|
entries: const [],
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
final plunger = Plunger.test();
|
|
|
|
|
|
|
|
await game.pump(
|
|
|
|
|
|
|
|
[component, backbox, plunger],
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await plunger.ensureAdd(
|
|
|
|
|
|
|
|
FlameBlocProvider<PlungerCubit, PlungerState>(
|
|
|
|
|
|
|
|
create: PlungerCubit.new,
|
|
|
|
|
|
|
|
children: [
|
|
|
|
|
|
|
|
PlungerPullingBehavior(strength: 0),
|
|
|
|
|
|
|
|
PlungerAutoPullingBehavior(strength: 0)
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
expect(state.status, GameStatus.gameOver);
|
|
|
|
|
|
|
|
component.onNewState(state);
|
|
|
|
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
expect(
|
|
|
|
|
|
|
|
plunger.children.whereType<PlungerPullingBehavior>(),
|
|
|
|
|
|
|
|
isEmpty,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
flameTester.test(
|
|
|
|
flameTester.test(
|
|
|
|
'plays the game over voice over',
|
|
|
|
'plays the game over voice over',
|
|
|
|
(game) async {
|
|
|
|
(game) async {
|
|
|
@ -292,7 +333,7 @@ void main() {
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
flameTester.test(
|
|
|
|
flameTester.test(
|
|
|
|
'adds key controlling behavior to Flippers when the game is started',
|
|
|
|
'adds FlipperKeyControllingBehavior to Flippers',
|
|
|
|
(game) async {
|
|
|
|
(game) async {
|
|
|
|
final component = GameBlocStatusListener();
|
|
|
|
final component = GameBlocStatusListener();
|
|
|
|
final leaderboardRepository = _MockLeaderboardRepository();
|
|
|
|
final leaderboardRepository = _MockLeaderboardRepository();
|
|
|
@ -317,6 +358,120 @@ void main() {
|
|
|
|
);
|
|
|
|
);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
flameTester.test(
|
|
|
|
|
|
|
|
'adds PlungerKeyControllingBehavior to Plunger when on desktop',
|
|
|
|
|
|
|
|
(game) async {
|
|
|
|
|
|
|
|
final platformHelper = _MockPlatformHelper();
|
|
|
|
|
|
|
|
when(() => platformHelper.isMobile).thenReturn(false);
|
|
|
|
|
|
|
|
final component = GameBlocStatusListener();
|
|
|
|
|
|
|
|
final leaderboardRepository = _MockLeaderboardRepository();
|
|
|
|
|
|
|
|
final shareRepository = _MockShareRepository();
|
|
|
|
|
|
|
|
final backbox = Backbox(
|
|
|
|
|
|
|
|
leaderboardRepository: leaderboardRepository,
|
|
|
|
|
|
|
|
shareRepository: shareRepository,
|
|
|
|
|
|
|
|
entries: const [],
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
final plunger = Plunger.test();
|
|
|
|
|
|
|
|
await game.pump(
|
|
|
|
|
|
|
|
[component, backbox, plunger],
|
|
|
|
|
|
|
|
platformHelper: platformHelper,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
await plunger.ensureAdd(
|
|
|
|
|
|
|
|
FlameBlocProvider<PlungerCubit, PlungerState>(
|
|
|
|
|
|
|
|
create: _MockPlungerCubit.new,
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
expect(state.status, GameStatus.playing);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
component.onNewState(state);
|
|
|
|
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
expect(
|
|
|
|
|
|
|
|
plunger
|
|
|
|
|
|
|
|
.descendants()
|
|
|
|
|
|
|
|
.whereType<PlungerKeyControllingBehavior>()
|
|
|
|
|
|
|
|
.length,
|
|
|
|
|
|
|
|
equals(1),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
flameTester.test(
|
|
|
|
|
|
|
|
'adds PlungerPullingBehavior to Plunger when on desktop',
|
|
|
|
|
|
|
|
(game) async {
|
|
|
|
|
|
|
|
final platformHelper = _MockPlatformHelper();
|
|
|
|
|
|
|
|
when(() => platformHelper.isMobile).thenReturn(false);
|
|
|
|
|
|
|
|
final component = GameBlocStatusListener();
|
|
|
|
|
|
|
|
final leaderboardRepository = _MockLeaderboardRepository();
|
|
|
|
|
|
|
|
final shareRepository = _MockShareRepository();
|
|
|
|
|
|
|
|
final backbox = Backbox(
|
|
|
|
|
|
|
|
leaderboardRepository: leaderboardRepository,
|
|
|
|
|
|
|
|
shareRepository: shareRepository,
|
|
|
|
|
|
|
|
entries: const [],
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
final plunger = Plunger.test();
|
|
|
|
|
|
|
|
await game.pump(
|
|
|
|
|
|
|
|
[component, backbox, plunger],
|
|
|
|
|
|
|
|
platformHelper: platformHelper,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
await plunger.ensureAdd(
|
|
|
|
|
|
|
|
FlameBlocProvider<PlungerCubit, PlungerState>(
|
|
|
|
|
|
|
|
create: _MockPlungerCubit.new,
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
expect(state.status, GameStatus.playing);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
component.onNewState(state);
|
|
|
|
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
expect(
|
|
|
|
|
|
|
|
plunger.descendants().whereType<PlungerPullingBehavior>().length,
|
|
|
|
|
|
|
|
equals(1),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
flameTester.test(
|
|
|
|
|
|
|
|
'adds PlungerAutoPullingBehavior to Plunger when on mobile',
|
|
|
|
|
|
|
|
(game) async {
|
|
|
|
|
|
|
|
final platformHelper = _MockPlatformHelper();
|
|
|
|
|
|
|
|
when(() => platformHelper.isMobile).thenReturn(true);
|
|
|
|
|
|
|
|
final component = GameBlocStatusListener();
|
|
|
|
|
|
|
|
final leaderboardRepository = _MockLeaderboardRepository();
|
|
|
|
|
|
|
|
final shareRepository = _MockShareRepository();
|
|
|
|
|
|
|
|
final backbox = Backbox(
|
|
|
|
|
|
|
|
leaderboardRepository: leaderboardRepository,
|
|
|
|
|
|
|
|
shareRepository: shareRepository,
|
|
|
|
|
|
|
|
entries: const [],
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
final plunger = Plunger.test();
|
|
|
|
|
|
|
|
await game.pump(
|
|
|
|
|
|
|
|
[component, backbox, plunger],
|
|
|
|
|
|
|
|
platformHelper: platformHelper,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
await plunger.ensureAdd(
|
|
|
|
|
|
|
|
FlameBlocProvider<PlungerCubit, PlungerState>(
|
|
|
|
|
|
|
|
create: _MockPlungerCubit.new,
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
expect(state.status, GameStatus.playing);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
component.onNewState(state);
|
|
|
|
|
|
|
|
await game.ready();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
expect(
|
|
|
|
|
|
|
|
plunger
|
|
|
|
|
|
|
|
.descendants()
|
|
|
|
|
|
|
|
.whereType<PlungerAutoPullingBehavior>()
|
|
|
|
|
|
|
|
.length,
|
|
|
|
|
|
|
|
equals(1),
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|