refactor: renaming to `PinballPlayer` to `PinballAudioPlayer` (#396)

* refactor: renaming  to

* fix merge

* lint

* suggestions

* suggestions

* suggestions
pull/358/head
Erick 2 years ago committed by alestiago
parent bff2c6e2af
commit 8eb83fba99

@ -15,15 +15,15 @@ class App extends StatelessWidget {
Key? key,
required AuthenticationRepository authenticationRepository,
required LeaderboardRepository leaderboardRepository,
required PinballPlayer pinballPlayer,
required PinballAudioPlayer pinballAudioPlayer,
}) : _authenticationRepository = authenticationRepository,
_leaderboardRepository = leaderboardRepository,
_pinballPlayer = pinballPlayer,
_pinballAudioPlayer = pinballAudioPlayer,
super(key: key);
final AuthenticationRepository _authenticationRepository;
final LeaderboardRepository _leaderboardRepository;
final PinballPlayer _pinballPlayer;
final PinballAudioPlayer _pinballAudioPlayer;
@override
Widget build(BuildContext context) {
@ -31,7 +31,7 @@ class App extends StatelessWidget {
providers: [
RepositoryProvider.value(value: _authenticationRepository),
RepositoryProvider.value(value: _leaderboardRepository),
RepositoryProvider.value(value: _pinballPlayer),
RepositoryProvider.value(value: _pinballAudioPlayer),
],
child: MultiBlocProvider(
providers: [

@ -7,11 +7,11 @@ import 'package:pinball_audio/pinball_audio.dart';
part 'assets_manager_state.dart';
class AssetsManagerCubit extends Cubit<AssetsManagerState> {
AssetsManagerCubit(this._game, this._player)
AssetsManagerCubit(this._game, this._audioPlayer)
: super(const AssetsManagerState.initial());
final PinballGame _game;
final PinballPlayer _player;
final PinballAudioPlayer _audioPlayer;
Future<void> load() async {
/// Assigning loadables is a very expensive operation. With this purposeful
@ -24,7 +24,7 @@ class AssetsManagerCubit extends Cubit<AssetsManagerState> {
loadables: [
_game.preFetchLeaderboard(),
..._game.preLoadAssets(),
..._player.load(),
..._audioPlayer.load(),
...BonusAnimation.loadAssets(),
...SelectedCharacter.loadAssets(),
],

@ -15,7 +15,7 @@ class BonusNoiseBehavior extends Component {
},
onNewState: (state) {
final bonus = state.bonusHistory.last;
final audioPlayer = readProvider<PinballPlayer>();
final audioPlayer = readProvider<PinballAudioPlayer>();
switch (bonus) {
case GameBonus.googleWord:

@ -6,6 +6,6 @@ class BumperNoiseBehavior extends ContactBehavior {
@override
void beginContact(Object other, Contact contact) {
super.beginContact(other, contact);
readProvider<PinballPlayer>().play(PinballAudio.bumper);
readProvider<PinballAudioPlayer>().play(PinballAudio.bumper);
}
}

@ -30,7 +30,7 @@ class PlungerNoiseBehavior extends Component {
@override
Future<void> onLoad() async {
await super.onLoad();
readProvider<PinballPlayer>().play(PinballAudio.launcher);
readProvider<PinballAudioPlayer>().play(PinballAudio.launcher);
}
@override

@ -20,7 +20,7 @@ class GameBlocStatusListener extends Component
case GameStatus.waiting:
break;
case GameStatus.playing:
readProvider<PinballPlayer>().play(PinballAudio.backgroundMusic);
readProvider<PinballAudioPlayer>().play(PinballAudio.backgroundMusic);
gameRef
.descendants()
.whereType<Flipper>()
@ -29,7 +29,7 @@ class GameBlocStatusListener extends Component
gameRef.overlays.remove(PinballGame.playButtonOverlay);
break;
case GameStatus.gameOver:
readProvider<PinballPlayer>().play(PinballAudio.gameOverVoiceOver);
readProvider<PinballAudioPlayer>().play(PinballAudio.gameOverVoiceOver);
gameRef.descendants().whereType<Backbox>().first.requestInitials(
score: state.displayScore,
character: readBloc<CharacterThemeCubit, CharacterThemeState>()

@ -22,10 +22,10 @@ class PinballGame extends PinballForge2DGame
required this.leaderboardRepository,
required GameBloc gameBloc,
required AppLocalizations l10n,
required PinballPlayer player,
required PinballAudioPlayer audioPlayer,
}) : focusNode = FocusNode(),
_gameBloc = gameBloc,
_player = player,
_audioPlayer = audioPlayer,
_characterThemeBloc = characterThemeBloc,
_l10n = l10n,
super(
@ -47,7 +47,7 @@ class PinballGame extends PinballForge2DGame
final CharacterThemeCubit _characterThemeBloc;
final PinballPlayer _player;
final PinballAudioPlayer _audioPlayer;
final LeaderboardRepository leaderboardRepository;
@ -82,7 +82,7 @@ class PinballGame extends PinballForge2DGame
children: [
MultiFlameProvider(
providers: [
FlameProvider<PinballPlayer>.value(_player),
FlameProvider<PinballAudioPlayer>.value(_audioPlayer),
FlameProvider<LeaderboardRepository>.value(leaderboardRepository),
FlameProvider<AppLocalizations>.value(_l10n),
],
@ -188,11 +188,11 @@ class DebugPinballGame extends PinballGame with FPSCounter, PanDetector {
required CharacterThemeCubit characterThemeBloc,
required LeaderboardRepository leaderboardRepository,
required AppLocalizations l10n,
required PinballPlayer player,
required PinballAudioPlayer audioPlayer,
required GameBloc gameBloc,
}) : super(
characterThemeBloc: characterThemeBloc,
player: player,
audioPlayer: audioPlayer,
leaderboardRepository: leaderboardRepository,
l10n: l10n,
gameBloc: gameBloc,

@ -24,30 +24,31 @@ class PinballGamePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final characterThemeBloc = context.read<CharacterThemeCubit>();
final player = context.read<PinballPlayer>();
final audioPlayer = context.read<PinballAudioPlayer>();
final leaderboardRepository = context.read<LeaderboardRepository>();
final gameBloc = context.read<GameBloc>();
final game = isDebugMode
? DebugPinballGame(
characterThemeBloc: characterThemeBloc,
player: player,
audioPlayer: audioPlayer,
leaderboardRepository: leaderboardRepository,
l10n: context.l10n,
gameBloc: gameBloc,
)
: PinballGame(
characterThemeBloc: characterThemeBloc,
player: player,
audioPlayer: audioPlayer,
leaderboardRepository: leaderboardRepository,
l10n: context.l10n,
gameBloc: gameBloc,
);
return Container(
decoration: const CrtBackground(),
child: Scaffold(
backgroundColor: PinballColors.transparent,
body: BlocProvider(
create: (_) => AssetsManagerCubit(game, player)..load(),
create: (_) => AssetsManagerCubit(game, audioPlayer)..load(),
child: PinballGameView(game),
),
),

@ -91,7 +91,9 @@ class _HowToPlayDialogState extends State<HowToPlayDialog> {
return WillPopScope(
onWillPop: () {
widget.onDismissCallback.call();
context.read<PinballPlayer>().play(PinballAudio.ioPinballVoiceOver);
context
.read<PinballAudioPlayer>()
.play(PinballAudio.ioPinballVoiceOver);
return Future.value(true);
},
child: PinballDialog(

@ -11,7 +11,7 @@ void main() {
bootstrap((firestore, firebaseAuth) async {
final leaderboardRepository = LeaderboardRepository(firestore);
final authenticationRepository = AuthenticationRepository(firebaseAuth);
final pinballPlayer = PinballPlayer();
final pinballAudioPlayer = PinballAudioPlayer();
unawaited(
Firebase.initializeApp().then(
(_) => authenticationRepository.authenticateAnonymously(),
@ -20,7 +20,7 @@ void main() {
return App(
authenticationRepository: authenticationRepository,
leaderboardRepository: leaderboardRepository,
pinballPlayer: pinballPlayer,
pinballAudioPlayer: pinballAudioPlayer,
);
});
}

@ -11,7 +11,7 @@ void main() {
bootstrap((firestore, firebaseAuth) async {
final leaderboardRepository = LeaderboardRepository(firestore);
final authenticationRepository = AuthenticationRepository(firebaseAuth);
final pinballPlayer = PinballPlayer();
final pinballAudioPlayer = PinballAudioPlayer();
unawaited(
Firebase.initializeApp().then(
(_) => authenticationRepository.authenticateAnonymously(),
@ -20,7 +20,7 @@ void main() {
return App(
authenticationRepository: authenticationRepository,
leaderboardRepository: leaderboardRepository,
pinballPlayer: pinballPlayer,
pinballAudioPlayer: pinballAudioPlayer,
);
});
}

@ -11,7 +11,7 @@ void main() {
bootstrap((firestore, firebaseAuth) async {
final leaderboardRepository = LeaderboardRepository(firestore);
final authenticationRepository = AuthenticationRepository(firebaseAuth);
final pinballPlayer = PinballPlayer();
final pinballAudioPlayer = PinballAudioPlayer();
unawaited(
Firebase.initializeApp().then(
(_) => authenticationRepository.authenticateAnonymously(),
@ -20,7 +20,7 @@ void main() {
return App(
authenticationRepository: authenticationRepository,
leaderboardRepository: leaderboardRepository,
pinballPlayer: pinballPlayer,
pinballAudioPlayer: pinballAudioPlayer,
);
});
}

@ -145,12 +145,12 @@ class _BumperAudio extends _Audio {
}
}
/// {@template pinball_player}
/// {@template pinball_audio_player}
/// Sound manager for the pinball game
/// {@endtemplate}
class PinballPlayer {
/// {@macro pinball_player}
PinballPlayer({
class PinballAudioPlayer {
/// {@macro pinball_audio_player}
PinballAudioPlayer({
CreateAudioPool? createAudioPool,
PlaySingleAudio? playSingleAudio,
LoopSingleAudio? loopSingleAudio,

@ -51,7 +51,7 @@ void main() {
late _MockLoopSingleAudio loopSingleAudio;
late _PreCacheSingleAudio preCacheSingleAudio;
late Random seed;
late PinballPlayer player;
late PinballAudioPlayer audioPlayer;
setUpAll(() {
registerFallbackValue(_MockAudioCache());
@ -81,7 +81,7 @@ void main() {
seed = _MockRandom();
player = PinballPlayer(
audioPlayer = PinballAudioPlayer(
configureAudioCache: configureAudioCache.onCall,
createAudioPool: createAudioPool.onCall,
playSingleAudio: playSingleAudio.onCall,
@ -92,12 +92,12 @@ void main() {
});
test('can be instantiated', () {
expect(PinballPlayer(), isNotNull);
expect(PinballAudioPlayer(), isNotNull);
});
group('load', () {
test('creates the bumpers pools', () async {
await Future.wait(player.load());
await Future.wait(audioPlayer.load());
verify(
() => createAudioPool.onCall(
@ -117,25 +117,25 @@ void main() {
});
test('configures the audio cache instance', () async {
await Future.wait(player.load());
await Future.wait(audioPlayer.load());
verify(() => configureAudioCache.onCall(FlameAudio.audioCache))
.called(1);
});
test('sets the correct prefix', () async {
player = PinballPlayer(
audioPlayer = PinballAudioPlayer(
createAudioPool: createAudioPool.onCall,
playSingleAudio: playSingleAudio.onCall,
preCacheSingleAudio: preCacheSingleAudio.onCall,
);
await Future.wait(player.load());
await Future.wait(audioPlayer.load());
expect(FlameAudio.audioCache.prefix, equals(''));
});
test('pre cache the assets', () async {
await Future.wait(player.load());
await Future.wait(audioPlayer.load());
verify(
() => preCacheSingleAudio
@ -209,8 +209,8 @@ void main() {
group('when seed is true', () {
test('plays the bumper A sound pool', () async {
when(seed.nextBool).thenReturn(true);
await Future.wait(player.load());
player.play(PinballAudio.bumper);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.bumper);
verify(() => bumperAPool.start(volume: 0.6)).called(1);
});
@ -219,8 +219,8 @@ void main() {
group('when seed is false', () {
test('plays the bumper B sound pool', () async {
when(seed.nextBool).thenReturn(false);
await Future.wait(player.load());
player.play(PinballAudio.bumper);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.bumper);
verify(() => bumperBPool.start(volume: 0.6)).called(1);
});
@ -229,8 +229,8 @@ void main() {
group('google', () {
test('plays the correct file', () async {
await Future.wait(player.load());
player.play(PinballAudio.google);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.google);
verify(
() => playSingleAudio
@ -241,8 +241,8 @@ void main() {
group('sparky', () {
test('plays the correct file', () async {
await Future.wait(player.load());
player.play(PinballAudio.sparky);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.sparky);
verify(
() => playSingleAudio
@ -253,8 +253,8 @@ void main() {
group('dino', () {
test('plays the correct file', () async {
await Future.wait(player.load());
player.play(PinballAudio.dino);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.dino);
verify(
() => playSingleAudio
@ -265,8 +265,8 @@ void main() {
group('android', () {
test('plays the correct file', () async {
await Future.wait(player.load());
player.play(PinballAudio.android);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.android);
verify(
() => playSingleAudio
@ -277,8 +277,8 @@ void main() {
group('dash', () {
test('plays the correct file', () async {
await Future.wait(player.load());
player.play(PinballAudio.dash);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.dash);
verify(
() => playSingleAudio
@ -289,8 +289,8 @@ void main() {
group('launcher', () {
test('plays the correct file', () async {
await Future.wait(player.load());
player.play(PinballAudio.launcher);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.launcher);
verify(
() => playSingleAudio
@ -301,8 +301,8 @@ void main() {
group('ioPinballVoiceOver', () {
test('plays the correct file', () async {
await Future.wait(player.load());
player.play(PinballAudio.ioPinballVoiceOver);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.ioPinballVoiceOver);
verify(
() => playSingleAudio.onCall(
@ -314,8 +314,8 @@ void main() {
group('gameOverVoiceOver', () {
test('plays the correct file', () async {
await Future.wait(player.load());
player.play(PinballAudio.gameOverVoiceOver);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.gameOverVoiceOver);
verify(
() => playSingleAudio.onCall(
@ -327,8 +327,8 @@ void main() {
group('backgroundMusic', () {
test('plays the correct file', () async {
await Future.wait(player.load());
player.play(PinballAudio.backgroundMusic);
await Future.wait(audioPlayer.load());
audioPlayer.play(PinballAudio.backgroundMusic);
verify(
() => loopSingleAudio
@ -340,10 +340,13 @@ void main() {
test(
'throws assertions error when playing an unregistered audio',
() async {
player.audios.remove(PinballAudio.google);
await Future.wait(player.load());
audioPlayer.audios.remove(PinballAudio.google);
await Future.wait(audioPlayer.load());
expect(() => player.play(PinballAudio.google), throwsAssertionError);
expect(
() => audioPlayer.play(PinballAudio.google),
throwsAssertionError,
);
},
);
});

@ -9,7 +9,7 @@ import 'package:pinball_audio/pinball_audio.dart';
class _MockAuthenticationRepository extends Mock
implements AuthenticationRepository {}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
class _MockLeaderboardRepository extends Mock implements LeaderboardRepository {
}
@ -18,13 +18,13 @@ void main() {
group('App', () {
late AuthenticationRepository authenticationRepository;
late LeaderboardRepository leaderboardRepository;
late PinballPlayer pinballPlayer;
late PinballAudioPlayer pinballAudioPlayer;
setUp(() {
authenticationRepository = _MockAuthenticationRepository();
leaderboardRepository = _MockLeaderboardRepository();
pinballPlayer = _MockPinballPlayer();
when(pinballPlayer.load).thenAnswer((_) => [Future.value()]);
pinballAudioPlayer = _MockPinballAudioPlayer();
when(pinballAudioPlayer.load).thenAnswer((_) => [Future.value()]);
});
testWidgets('renders PinballGamePage', (tester) async {
@ -32,7 +32,7 @@ void main() {
App(
authenticationRepository: authenticationRepository,
leaderboardRepository: leaderboardRepository,
pinballPlayer: pinballPlayer,
pinballAudioPlayer: pinballAudioPlayer,
),
);
await tester.pump(const Duration(milliseconds: 400));

@ -14,15 +14,15 @@ import 'package:pinball_flame/pinball_flame.dart';
class _TestGame extends Forge2DGame {
Future<void> pump(
BonusNoiseBehavior child, {
required PinballPlayer player,
required PinballAudioPlayer audioPlayer,
required GameBloc bloc,
}) {
return ensureAdd(
FlameBlocProvider<GameBloc, GameState>.value(
value: bloc,
children: [
FlameProvider<PinballPlayer>.value(
player,
FlameProvider<PinballAudioPlayer>.value(
audioPlayer,
children: [
child,
],
@ -33,7 +33,7 @@ class _TestGame extends Forge2DGame {
}
}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
class _MockGameBloc extends Mock implements GameBloc {}
@ -41,7 +41,7 @@ void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('BonusNoiseBehavior', () {
late PinballPlayer player;
late PinballAudioPlayer audioPlayer;
late GameBloc bloc;
final flameTester = FlameTester(_TestGame.new);
@ -50,8 +50,8 @@ void main() {
});
setUp(() {
player = _MockPinballPlayer();
when(() => player.play(any())).thenAnswer((_) {});
audioPlayer = _MockPinballAudioPlayer();
when(() => audioPlayer.play(any())).thenAnswer((_) {});
bloc = _MockGameBloc();
});
@ -73,10 +73,10 @@ void main() {
initialState: initialState,
);
final behavior = BonusNoiseBehavior();
await game.pump(behavior, player: player, bloc: bloc);
await game.pump(behavior, audioPlayer: audioPlayer, bloc: bloc);
},
verify: (_, __) async {
verify(() => player.play(PinballAudio.google)).called(1);
verify(() => audioPlayer.play(PinballAudio.google)).called(1);
},
);
@ -98,10 +98,10 @@ void main() {
initialState: initialState,
);
final behavior = BonusNoiseBehavior();
await game.pump(behavior, player: player, bloc: bloc);
await game.pump(behavior, audioPlayer: audioPlayer, bloc: bloc);
},
verify: (_, __) async {
verify(() => player.play(PinballAudio.sparky)).called(1);
verify(() => audioPlayer.play(PinballAudio.sparky)).called(1);
},
);
@ -123,10 +123,10 @@ void main() {
initialState: initialState,
);
final behavior = BonusNoiseBehavior();
await game.pump(behavior, player: player, bloc: bloc);
await game.pump(behavior, audioPlayer: audioPlayer, bloc: bloc);
},
verify: (_, __) async {
verify(() => player.play(PinballAudio.dino)).called(1);
verify(() => audioPlayer.play(PinballAudio.dino)).called(1);
},
);
@ -148,10 +148,10 @@ void main() {
initialState: initialState,
);
final behavior = BonusNoiseBehavior();
await game.pump(behavior, player: player, bloc: bloc);
await game.pump(behavior, audioPlayer: audioPlayer, bloc: bloc);
},
verify: (_, __) async {
verify(() => player.play(PinballAudio.android)).called(1);
verify(() => audioPlayer.play(PinballAudio.android)).called(1);
},
);
@ -173,10 +173,10 @@ void main() {
initialState: initialState,
);
final behavior = BonusNoiseBehavior();
await game.pump(behavior, player: player, bloc: bloc);
await game.pump(behavior, audioPlayer: audioPlayer, bloc: bloc);
},
verify: (_, __) async {
verify(() => player.play(PinballAudio.dash)).called(1);
verify(() => audioPlayer.play(PinballAudio.dash)).called(1);
},
);
});

@ -9,10 +9,13 @@ import 'package:pinball_audio/pinball_audio.dart';
import 'package:pinball_flame/pinball_flame.dart';
class _TestGame extends Forge2DGame {
Future<void> pump(_TestBodyComponent child, {required PinballPlayer player}) {
Future<void> pump(
_TestBodyComponent child, {
required PinballAudioPlayer audioPlayer,
}) {
return ensureAdd(
FlameProvider<PinballPlayer>.value(
player,
FlameProvider<PinballAudioPlayer>.value(
audioPlayer,
children: [
child,
],
@ -26,7 +29,7 @@ class _TestBodyComponent extends BodyComponent {
Body createBody() => world.createBody(BodyDef());
}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
class _MockContact extends Mock implements Contact {}
@ -35,11 +38,11 @@ void main() {
group('BumperNoiseBehavior', () {});
late PinballPlayer player;
late PinballAudioPlayer audioPlayer;
final flameTester = FlameTester(_TestGame.new);
setUp(() {
player = _MockPinballPlayer();
audioPlayer = _MockPinballAudioPlayer();
});
flameTester.testGameWidget(
@ -47,12 +50,12 @@ void main() {
setUp: (game, _) async {
final behavior = BumperNoiseBehavior();
final parent = _TestBodyComponent();
await game.pump(parent, player: player);
await game.pump(parent, audioPlayer: audioPlayer);
await parent.ensureAdd(behavior);
behavior.beginContact(Object(), _MockContact());
},
verify: (_, __) async {
verify(() => player.play(PinballAudio.bumper)).called(1);
verify(() => audioPlayer.play(PinballAudio.bumper)).called(1);
},
);
}

@ -28,15 +28,15 @@ class _TestGame extends Forge2DGame with HasKeyboardHandlerComponents {
Future<void> pump(
Plunger child, {
GameBloc? gameBloc,
PinballPlayer? pinballPlayer,
PinballAudioPlayer? pinballAudioPlayer,
}) {
return ensureAdd(
FlameBlocProvider<GameBloc, GameState>.value(
value: gameBloc ?? GameBloc()
..add(const GameStarted()),
children: [
FlameProvider<PinballPlayer>.value(
pinballPlayer ?? _MockPinballPlayer(),
FlameProvider<PinballAudioPlayer>.value(
pinballAudioPlayer ?? _MockPinballAudioPlayer(),
children: [child],
)
],
@ -47,7 +47,7 @@ class _TestGame extends Forge2DGame with HasKeyboardHandlerComponents {
class _MockGameBloc extends Mock implements GameBloc {}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
@ -158,17 +158,17 @@ void main() {
});
group('PlungerNoiseBehavior', () {
late PinballPlayer player;
late PinballAudioPlayer audioPlayer;
setUp(() {
player = _MockPinballPlayer();
audioPlayer = _MockPinballAudioPlayer();
});
flameTester.test('plays the correct sound on load', (game) async {
final parent = ControlledPlunger(compressionDistance: 10);
await game.pump(parent, pinballPlayer: player);
await game.pump(parent, pinballAudioPlayer: audioPlayer);
await parent.ensureAdd(PlungerNoiseBehavior());
verify(() => player.play(PinballAudio.launcher)).called(1);
verify(() => audioPlayer.play(PinballAudio.launcher)).called(1);
});
test('is removed on the first update', () {

@ -36,7 +36,7 @@ class _TestGame extends Forge2DGame {
value: _MockGameBloc(),
children: [
FlameProvider.value(
_MockPinballPlayer(),
_MockPinballAudioPlayer(),
children: [
ZCanvasComponent(children: [child]),
],
@ -47,7 +47,7 @@ class _TestGame extends Forge2DGame {
}
}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
class _MockGameBloc extends Mock implements GameBloc {}

@ -30,7 +30,7 @@ class _TestGame extends Forge2DGame {
Future<void> pump(
Iterable<Component> children, {
PinballPlayer? pinballPlayer,
PinballAudioPlayer? pinballAudioPlayer,
}) async {
return ensureAdd(
FlameMultiBlocProvider(
@ -45,8 +45,8 @@ class _TestGame extends Forge2DGame {
children: [
MultiFlameProvider(
providers: [
FlameProvider<PinballPlayer>.value(
pinballPlayer ?? _MockPinballPlayer(),
FlameProvider<PinballAudioPlayer>.value(
pinballAudioPlayer ?? _MockPinballAudioPlayer(),
),
FlameProvider<AppLocalizations>.value(
_MockAppLocalizations(),
@ -60,7 +60,7 @@ class _TestGame extends Forge2DGame {
}
}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
class _MockLeaderboardRepository extends Mock implements LeaderboardRepository {
}
@ -191,18 +191,25 @@ void main() {
flameTester.test(
'plays the game over voice over',
(game) async {
final player = _MockPinballPlayer();
final audioPlayer = _MockPinballAudioPlayer();
final component = GameBlocStatusListener();
final repository = _MockLeaderboardRepository();
final backbox = Backbox(
leaderboardRepository: repository,
entries: const [],
);
await game.pump([component, backbox], pinballPlayer: player);
await game.pump(
[component, backbox],
pinballAudioPlayer: audioPlayer,
);
component.onNewState(state);
verify(() => player.play(PinballAudio.gameOverVoiceOver)).called(1);
verify(
() => audioPlayer.play(
PinballAudio.gameOverVoiceOver,
),
).called(1);
},
);
});
@ -219,14 +226,18 @@ void main() {
flameTester.test(
'plays the background music on start',
(game) async {
final player = _MockPinballPlayer();
final audioPlayer = _MockPinballAudioPlayer();
final component = GameBlocStatusListener();
await game.pump([component], pinballPlayer: player);
await game.pump([component], pinballAudioPlayer: audioPlayer);
expect(state.status, equals(GameStatus.playing));
component.onNewState(state);
verify(() => player.play(PinballAudio.backgroundMusic)).called(1);
verify(
() => audioPlayer.play(
PinballAudio.backgroundMusic,
),
).called(1);
},
);

@ -36,8 +36,8 @@ class _TestGame extends Forge2DGame {
FlameBlocProvider<GameBloc, GameState>.value(
value: gameBloc,
children: [
FlameProvider<PinballPlayer>.value(
_MockPinballPlayer(),
FlameProvider<PinballAudioPlayer>.value(
_MockPinballAudioPlayer(),
children: [child],
)
],
@ -48,7 +48,7 @@ class _TestGame extends Forge2DGame {
class _MockGameBloc extends Mock implements GameBloc {}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
void main() {
TestWidgetsFlutterBinding.ensureInitialized();

@ -24,7 +24,7 @@ class _TestPinballGame extends PinballGame {
leaderboardRepository: _MockLeaderboardRepository(),
gameBloc: GameBloc(),
l10n: _MockAppLocalizations(),
player: _MockPinballPlayer(),
audioPlayer: _MockPinballAudioPlayer(),
);
@override
@ -43,7 +43,7 @@ class _TestDebugPinballGame extends DebugPinballGame {
leaderboardRepository: _MockLeaderboardRepository(),
gameBloc: GameBloc(),
l10n: _MockAppLocalizations(),
player: _MockPinballPlayer(),
audioPlayer: _MockPinballAudioPlayer(),
);
@override
@ -78,7 +78,7 @@ class _MockDragEndInfo extends Mock implements DragEndInfo {}
class _MockLeaderboardRepository extends Mock implements LeaderboardRepository {
}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
void main() {
TestWidgetsFlutterBinding.ensureInitialized();

@ -26,7 +26,7 @@ class _TestPinballGame extends PinballGame {
leaderboardRepository: _MockLeaderboardRepository(),
gameBloc: GameBloc(),
l10n: _MockAppLocalizations(),
player: _MockPinballPlayer(),
audioPlayer: _MockPinballAudioPlayer(),
);
@override
@ -52,7 +52,7 @@ class _MockStartGameBloc extends Mock implements StartGameBloc {}
class _MockAppLocalizations extends Mock implements AppLocalizations {}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
class _MockLeaderboardRepository extends Mock implements LeaderboardRepository {
}

@ -24,12 +24,12 @@ class _MockGameBloc extends Mock implements GameBloc {}
class _MockStartGameBloc extends Mock implements StartGameBloc {}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
PinballPlayer _buildDefaultPinballPlayer() {
final player = _MockPinballPlayer();
when(player.load).thenAnswer((_) => [Future.value()]);
return player;
PinballAudioPlayer _buildDefaultPinballAudioPlayer() {
final audioPlayer = _MockPinballAudioPlayer();
when(audioPlayer.load).thenAnswer((_) => [Future.value()]);
return audioPlayer;
}
AssetsManagerCubit _buildDefaultAssetsManagerCubit() {
@ -55,7 +55,7 @@ extension PumpApp on WidgetTester {
AssetsManagerCubit? assetsManagerCubit,
CharacterThemeCubit? characterThemeCubit,
LeaderboardRepository? leaderboardRepository,
PinballPlayer? pinballPlayer,
PinballAudioPlayer? pinballAudioPlayer,
}) {
return runAsync(() {
return pumpWidget(
@ -65,7 +65,7 @@ extension PumpApp on WidgetTester {
value: leaderboardRepository ?? _MockLeaderboardRepository(),
),
RepositoryProvider.value(
value: pinballPlayer ?? _buildDefaultPinballPlayer(),
value: pinballAudioPlayer ?? _buildDefaultPinballAudioPlayer(),
),
],
child: MultiBlocProvider(

@ -16,11 +16,11 @@ class _MockGameBloc extends Mock implements GameBloc {}
class _MockCharacterThemeCubit extends Mock implements CharacterThemeCubit {}
class _MockPinballPlayer extends Mock implements PinballPlayer {}
class _MockPinballAudioPlayer extends Mock implements PinballAudioPlayer {}
void main() {
late StartGameBloc startGameBloc;
late PinballPlayer pinballPlayer;
late PinballAudioPlayer pinballAudioPlayer;
late CharacterThemeCubit characterThemeCubit;
group('StartGameListener', () {
@ -28,7 +28,7 @@ void main() {
await mockFlameImages();
startGameBloc = _MockStartGameBloc();
pinballPlayer = _MockPinballPlayer();
pinballAudioPlayer = _MockPinballAudioPlayer();
characterThemeCubit = _MockCharacterThemeCubit();
});
@ -241,7 +241,7 @@ void main() {
child: SizedBox.shrink(),
),
startGameBloc: startGameBloc,
pinballPlayer: pinballPlayer,
pinballAudioPlayer: pinballAudioPlayer,
);
await tester.pumpAndSettle();
@ -258,7 +258,7 @@ void main() {
);
await tester.pumpAndSettle();
verify(() => pinballPlayer.play(PinballAudio.ioPinballVoiceOver))
verify(() => pinballAudioPlayer.play(PinballAudio.ioPinballVoiceOver))
.called(1);
},
);

Loading…
Cancel
Save