Files
m3u8dl/N_m3u8DL_py/tests/test_utils.py
T
2026-09-26 13:55:43 +08:00

23 lines
867 B
Python

from n_m3u8dl_py.utils import replace_vars, truncate_filename, valid_filename
def test_replace_vars_supports_dash_number_formats() -> None:
values = {"RepresentationID": "audio", "Number": 28324}
assert replace_vars("$RepresentationID$/$Number%08x$/$Number%05d$/$Number%08X$", values) == "audio/00006ea4/28324/00006EA4"
def test_replace_vars_keeps_unknown_values() -> None:
assert replace_vars("$Number%08x$", {}) == "$Number%08x$"
def test_filename_truncation_is_stable_and_unicode_safe() -> None:
value = "中" * 100
result = truncate_filename(value, 50)
assert len(result.encode("utf-8")) <= 50
assert "\ufffd" not in result
assert valid_filename("a:b*c") == "a_b_c"
def test_replace_vars_supports_upper_and_lower_hex() -> None:
assert replace_vars("$Number%08x$/$Number%08X$", {"Number": 22999}) == "000059d7/000059D7"