23 lines
867 B
Python
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"
|