from lyra_worker.quality import quality_class, rank_key from lyra_worker.types import Candidate, Quality HIRES = Quality(fmt="FLAC", lossless=True, bit_depth=24, sample_rate=96000) CD = Quality(fmt="FLAC", lossless=True, bit_depth=16, sample_rate=44100) MP3 = Quality(fmt="MP3", lossless=False, bitrate_kbps=320) _TIERS = {"qobuz": 0, "soulseek": 1, "youtube": 2} def _cand(source, quality): return Candidate(source=source, source_ref="x", matched_artist="A", matched_album="B", quality=quality, track_count=10, source_tier=_TIERS[source]) def test_quality_class_tiers(): assert quality_class(HIRES) == 3 assert quality_class(CD) == 2 assert quality_class(MP3) == 1 def test_design_ranking_order(): # Qobuz hi-res > Qobuz lossless > Soulseek FLAC > Soulseek MP3 > YouTube ordered = [ _cand("qobuz", HIRES), _cand("qobuz", CD), _cand("soulseek", CD), _cand("soulseek", MP3), _cand("youtube", MP3), ] ranks = [rank_key(c) for c in ordered] assert ranks == sorted(ranks, reverse=True) assert len(set(ranks)) == 5 # strict total order, no ties