import Testing @testable import FlaroPlayback /// Die gemerkte Qualitätsstufe über mehrere Filme hinweg. /// /// Aufbewahrt wird eine Zahl, keine Sprosse: welche Sprossen es gibt, hängt /// von der Quelle ab. Eine 720p-Datei kennt keine Zwanzig-Megabit-Stufe — und /// dann stillschweigend auf „automatisch" zurückzufallen wäre eine andere /// Antwort als die, um die gebeten wurde. @Suite("Gemerkte Qualität") struct QualityMemoryTests { @Test("Null heißt: nichts gemerkt") func returnsNilForAutomatic() { #expect(PlayerQuality.automatic.storageValue == 0) #expect(PlayerQuality.restored(from: 0, forSourceHeight: 1080) == nil) } @Test("Original und Nur-Ton kommen unverändert zurück") func restoresSpecialCases() { #expect(PlayerQuality.restored(from: PlayerQuality.original.storageValue, forSourceHeight: 1080) == .original) #expect(PlayerQuality.restored(from: PlayerQuality.audioOnly.storageValue, forSourceHeight: 1080) == .audioOnly) } @Test("Eine vorhandene Sprosse kommt genau zurück") func restoresExactRung() { let chosen = PlayerQuality.limited(.init(bitrate: 3_000, height: 720)) let restored = PlayerQuality.restored(from: chosen.storageValue, forSourceHeight: 1080) #expect(restored == chosen) } @Test("Gibt es die Sprosse nicht, kommt die nächstgelegene") func fallsBackToClosestRung() { // Zwanzig Megabit gibt es nur für 1080p. Bei einer 480p-Quelle ist die // beste erreichbare Stufe eine andere — aber nicht „gar keine". let restored = PlayerQuality.restored(from: 20_000, forSourceHeight: 480) guard case .limited(let rung) = restored else { Issue.record("keine Stufe zurückbekommen") return } #expect(rung.height <= 480) } }