48 lines
1.6 KiB
Dart
48 lines
1.6 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:reelbox/media/media_helpers.dart';
|
|
|
|
void main() {
|
|
test('opening a player cannot overwrite an existing resume checkpoint', () {
|
|
final playback = PlaybackCheckpoint();
|
|
const savedPosition = Duration(minutes: 17);
|
|
var storedPosition = savedPosition;
|
|
void persist() {
|
|
if (playback.canPersist) storedPosition = playback.position;
|
|
}
|
|
|
|
persist();
|
|
playback.beginOpen();
|
|
persist();
|
|
expect(storedPosition, savedPosition);
|
|
expect(playback.canPersist, isFalse);
|
|
// Failed opens, duration discovery and a zero position are not watched time.
|
|
playback.duration = const Duration(hours: 2);
|
|
playback.position = Duration.zero;
|
|
persist();
|
|
expect(storedPosition, savedPosition);
|
|
playback.didOpen();
|
|
persist();
|
|
expect(storedPosition, savedPosition);
|
|
playback.position = const Duration(minutes: 18);
|
|
persist();
|
|
expect(storedPosition, const Duration(minutes: 18));
|
|
});
|
|
test(
|
|
'source switches do not attribute previous progress to the new source',
|
|
() {
|
|
final playback = PlaybackCheckpoint();
|
|
playback.beginOpen();
|
|
playback.didOpen();
|
|
playback.position = const Duration(minutes: 3);
|
|
expect(playback.canPersist, isTrue);
|
|
playback.beginOpen();
|
|
expect(playback.position, Duration.zero);
|
|
expect(playback.canPersist, isFalse);
|
|
playback.position = const Duration(seconds: 40);
|
|
expect(playback.canPersist, isFalse);
|
|
playback.didOpen();
|
|
expect(playback.canPersist, isTrue);
|
|
},
|
|
);
|
|
}
|