[verified] Publish ReelBox source under GPLv3

This commit is contained in:
Hermes committed 2026-11-12 23:41:13 +00:00
commit db2b505ca3
445 files changed
+105274

No files matched your search

+79
View File
@@ -0,0 +1,79 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:reelbox/state/app_state.dart';
void main() {
test(
'platform fonts resolve generic families and preserve safe custom fonts',
() {
expect(
AppSettings(subtitleFontFamily: 'serif').resolvedSubtitleFontFamily,
isNot('serif'),
);
expect(
AppSettings(subtitleFontFamily: 'monospace').resolvedSubtitleFontFamily,
isNot('monospace'),
);
expect(
AppSettings(subtitleFontFamily: 'My Font').resolvedSubtitleFontFamily,
'My Font',
);
expect(AppSettings().subtitleFontFamilyFallback, isNotEmpty);
},
);
test('new settings validate imports and roundtrip every field', () {
final prefs = AppSettings().copyWith(
subtitleEnabled: false,
subtitleFontFamily: 'Custom Font',
videoFit: 'cover',
audioOnly: true,
playerVolume: 0.42,
rememberVolume: true,
backgroundAudio: true,
closeOnCompletion: true,
resumeRewindSeconds: 120,
parallelDownloads: 8,
compactCatalog: true,
introCompleted: true,
externalPlayerPackage: 'org.videolan.vlc',
);
expect(AppSettings.fromJson(prefs.toJson()).toJson(), prefs.toJson());
final invalid = AppSettings.fromJson({
'playerVolume': -1,
'parallelDownloads': 999,
'resumeRewindSeconds': -4,
'videoFit': 'bad',
'subtitleEnabled': 1,
'subtitleFontFamily': '\u0000bad',
'externalPlayerPackage': 'https://bad.example',
'introCompleted': false,
});
expect(invalid.playerVolume, 1);
expect(invalid.parallelDownloads, 3);
expect(invalid.resumeRewindSeconds, 5);
expect(invalid.videoFit, 'contain');
expect(invalid.subtitleEnabled, true);
expect(invalid.subtitleFontFamily, 'sans-serif');
expect(invalid.externalPlayerPackage, 'ask');
expect(invalid.introCompleted, false);
});
test(
'new settings expose next-release defaults, legacy JSON skips intro',
() {
final json = AppSettings().toJson();
expect(json['subtitleEnabled'], true);
expect(json['subtitleFontFamily'], 'sans-serif');
expect(json['videoFit'], 'contain');
expect(json['audioOnly'], false);
expect(json['playerVolume'], 1.0);
expect(json['rememberVolume'], false);
expect(json['backgroundAudio'], false);
expect(json['closeOnCompletion'], false);
expect(json['resumeRewindSeconds'], 5);
expect(json['parallelDownloads'], 3);
expect(json['compactCatalog'], false);
expect(json['introCompleted'], false);
expect(json['externalPlayerPackage'], 'ask');
expect(AppSettings.fromJson({}).toJson()['introCompleted'], true);
},
);
}