Files
rippy/docker/api/test_prescan_helpers.py
T
Hitonabi bd6409038e
Ampel / ampel (push) Successful in 35s
UDF-Volume-Label-Leser (Blu-rays haben keine ISO-Bridge) + Etappe 12 (ARM)
Praxis-Befund mit echter BD-50: reines UDF, der ISO-PVD-Leser griff nicht.
Jetzt ECMA-167-Weg (AVDP Sektor 256 -> Main VDS -> PVD Tag-ID 1 ->
Volume Identifier als d-string), mit Tests fuer das d-string-Parsing.

ROADMAP Etappe 12 aus der ARM-Vollanalyse: was wir uebernehmen
(Fingerprint-DB, bdmt_eng.xml, Suchdegradation, Manual Mode, Apprise,
Multi-Drive, Backup-Modus) und wo wir ARM schlagen (Serien-Episoden-
Matching, Main-Feature per Laufzeitabgleich).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:33:27 +02:00

50 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Tests für die puren Pre-Scan-/OMDb-Helfer (Label-Normalisierung, Parsing)."""
from clients.omdb import parse_runtime_minutes, parse_year
from prescan.prescan import normalize_disc_label, parse_udf_dstring
def test_udf_dstring_latin1():
# d-string: [comp_id=8]["MEIN_FILM"][padding][len=10]
daten = bytes([8]) + b"MEIN_FILM" + bytes(21) + bytes([10])
assert parse_udf_dstring(daten) == "MEIN_FILM"
def test_udf_dstring_utf16():
text = "FILM".encode("utf-16-be")
daten = bytes([16]) + text + bytes(32 - 2 - len(text)) + bytes([1 + len(text)])
assert parse_udf_dstring(daten) == "FILM"
def test_udf_dstring_kaputt_gibt_leer():
assert parse_udf_dstring(b"") == ""
assert parse_udf_dstring(bytes(32)) == "" # Länge 0
daten = bytes([8]) + b"X" + bytes(29) + bytes([99]) # Länge > Puffer
assert parse_udf_dstring(daten) == ""
def test_label_normalisierung():
# Disc-Labels sind fast immer GROSS_MIT_UNTERSTRICHEN
assert normalize_disc_label("PULP_FICTION") == "Pulp Fiction"
assert normalize_disc_label("DIE_HARD_4.0_DE") == "Die Hard 4 0 De"
assert normalize_disc_label(" doppel raum ") == "doppel raum"
assert normalize_disc_label("") == ""
def test_label_mit_gemischter_schreibung_bleibt():
# Wer schon sauber benannt hat, wird nicht plattgewalzt
assert normalize_disc_label("Inception") == "Inception"
def test_omdb_runtime_parsing():
assert parse_runtime_minutes("142 min") == 142
assert parse_runtime_minutes("N/A") == 0
assert parse_runtime_minutes("") == 0
def test_omdb_jahr_parsing():
assert parse_year("1999") == 1999
assert parse_year("20052012") == 2005 # Serien-Zeitspanne
assert parse_year("N/A") is None
assert parse_year("") is None