pull/461/head
Erick Zanardo 3 years ago
parent 591457d9e9
commit faf6df60a2

@ -1,4 +1,3 @@
// coverage:ignore-start
import 'dart:async';
import 'package:audioplayers/audioplayers.dart';
@ -86,4 +85,3 @@ class PinballAudioPool {
_players.where((entry) => entry.player == player).single.available = true;
}
}
// coverage:ignore-end

@ -0,0 +1,73 @@
// ignore_for_file: one_member_abstracts
import 'package:audioplayers/audioplayers.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:pinball_audio/src/pinball_audio_pool.dart';
class _MockAudioPlayer extends Mock implements AudioPlayer {}
class _MockConfigureAudioCache extends Mock {
void onCall(AudioCache cache);
}
class _MockPlaySingleAudio extends Mock {
Future<AudioPlayer> onCall(String path, {double volume});
}
abstract class _PreCacheSingleAudio {
Future<void> onCall(String path);
}
class _MockPreCacheSingleAudio extends Mock implements _PreCacheSingleAudio {}
void main() {
group('PinballAudioPool', () {
late _PreCacheSingleAudio preCacheSingleAudio;
late _MockPlaySingleAudio playSingleAudio;
late PinballAudioPool pool;
late AudioPlayer audioPlayer;
setUp(() {
preCacheSingleAudio = _MockPreCacheSingleAudio();
when(() => preCacheSingleAudio.onCall(any())).thenAnswer((_) async {});
audioPlayer = _MockAudioPlayer();
when(() => audioPlayer.play(any(), volume: any(named: 'volume')))
.thenAnswer((_) async => 1);
playSingleAudio = _MockPlaySingleAudio();
when(() => playSingleAudio.onCall(any(), volume: any(named: 'volume')))
.thenAnswer((_) async => audioPlayer);
pool = PinballAudioPool(
path: 'path',
poolSize: 1,
preCacheSingleAudio: preCacheSingleAudio.onCall,
playSingleAudio: playSingleAudio.onCall,
duration: const Duration(milliseconds: 10),
);
});
test('pre cache the sound', () async {
await pool.load();
verify(() => preCacheSingleAudio.onCall('path')).called(1);
});
test('plays a fresh sound', () async {
await pool.load();
await pool.play();
verify(() => playSingleAudio.onCall('path', volume: 1)).called(1);
});
test('plays from the pool after it returned', () async {
await pool.load();
await pool.play();
await Future<void>.delayed(const Duration(milliseconds: 12));
await pool.play();
verify(() => audioPlayer.play('path')).called(1);
});
});
}

@ -411,7 +411,7 @@ void main() {
verify(
() => playSingleAudio
.onCall('packages/pinball_audio/${Assets.sfx.dino}'),
.onCall('packages/pinball_audio/${Assets.sfx.dino}', volume: 1),
).called(1);
when(clock.now).thenReturn(DateTime(2022, 1, 1, 1, 6));
@ -419,7 +419,7 @@ void main() {
verify(
() => playSingleAudio
.onCall('packages/pinball_audio/${Assets.sfx.dino}'),
.onCall('packages/pinball_audio/${Assets.sfx.dino}', volume: 1),
).called(1);
});
});

Loading…
Cancel
Save