Files
plezy/test/media/playback_timeline_test.dart

42 lines
1.5 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:plezy/media/playback_timeline.dart';
void main() {
test('seek detection uses one shared strict threshold', () {
final timeline = PlaybackTimeline();
expect(timeline.updatePosition(const Duration(seconds: 5)), isFalse);
expect(timeline.updatePosition(const Duration(seconds: 11)), isTrue);
expect(timeline.position, const Duration(seconds: 11));
});
test('watched threshold accepts the exact boundary', () {
final timeline = PlaybackTimeline(duration: const Duration(seconds: 100), watchedThreshold: 0.9);
timeline.updatePosition(const Duration(seconds: 90));
expect(timeline.watchedThresholdReached, isTrue);
});
test('unknown duration is not watched and reports zero progress', () {
final timeline = PlaybackTimeline(position: const Duration(seconds: 30));
expect(timeline.updateDuration(Duration.zero), isFalse);
expect(timeline.watchedThresholdReached, isFalse);
expect(timeline.progressPercent, 0);
});
test('progress is clamped and reset clears prior playback timing', () {
final timeline = PlaybackTimeline(position: const Duration(seconds: 120), duration: const Duration(seconds: 100));
expect(timeline.progressPercent, 100);
timeline.reset(watchedThreshold: 0.8);
expect(timeline.position, Duration.zero);
expect(timeline.duration, isNull);
expect(timeline.watchedThreshold, 0.8);
expect(timeline.watchedThresholdReached, isFalse);
});
}