Files
plezy/test/media/media_source_info_test.dart
T

95 lines
2.7 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:plezy/media/media_source_info.dart';
import 'package:plezy/utils/track_label_builder.dart';
void main() {
group('MediaSubtitleTrack label', () {
test('language leads; a bare "Forced" title folds into the suffix', () {
final track = MediaSubtitleTrack(
id: 401,
index: 0,
codec: 'srt',
languageCode: 'eng',
title: 'Forced',
displayTitle: 'English (SRT)',
selected: false,
forced: true,
);
expect(track.labelForIndex(0), const TrackLabel('English (Forced)', 'SRT'));
expect(track.label, const TrackLabel('English (Forced)', 'SRT'));
});
test('resolves the language name even when the source title is blank', () {
final track = MediaSubtitleTrack(
id: 402,
index: 1,
codec: 'ass',
languageCode: 'jpn',
title: ' ',
displayTitle: 'Japanese Signs/Songs',
selected: false,
forced: false,
);
expect(track.labelForIndex(1), const TrackLabel('Japanese', 'ASS'));
});
test('falls back to display title when nothing else is available', () {
final track = MediaSubtitleTrack(
id: 403,
index: 2,
displayTitle: 'Director Commentary',
selected: false,
forced: false,
);
expect(track.labelForIndex(2), const TrackLabel('Director Commentary'));
});
});
group('MediaAudioTrack label', () {
test('builds from stream fields, ignoring the server displayTitle', () {
final track = MediaAudioTrack(
id: 301,
index: 1,
codec: 'eac3',
language: 'English',
languageCode: 'eng',
title: null,
displayTitle: 'English (EAC3 5.1)',
channels: 6,
selected: true,
);
expect(track.label, const TrackLabel('English', 'E-AC3 · 5.1'));
});
test('server language name wins over an unmappable code', () {
final track = MediaAudioTrack(
id: 302,
index: 2,
codec: 'aac',
language: 'Filipino',
languageCode: 'fil',
channels: 2,
selected: false,
);
expect(track.label, const TrackLabel('Filipino', 'AAC · Stereo'));
});
test('falls back to displayTitle when stream fields are missing', () {
final track = MediaAudioTrack(id: 303, index: 3, displayTitle: 'Surround (EAC3)', selected: false);
expect(track.label, const TrackLabel('Surround (EAC3)'));
});
test('fallback index is clamped for zero-indexed streams', () {
final track = MediaAudioTrack(id: 0, index: 0, selected: false);
expect(track.label, const TrackLabel('Audio Track 1'));
});
});
}