Files
unshackle/tests/core/test_dash_replace_fields.py
T

36 lines
1.2 KiB
Python
Raw Normal View History

"""Regression tests for DASH.replace_fields template substitution.
Covers the fast-path short-circuits (no ``$``, no ``%``) and the printf-style
``$Field%fmt$`` padding, so plain and padded templates both resolve correctly.
"""
from unshackle.core.manifests.dash import DASH
def test_plain_fields_substituted() -> None:
url = "seg-$RepresentationID$-$Number$-$Time$.mp4"
out = DASH.replace_fields(url, RepresentationID="video=6M", Number=5, Time=20000)
assert out == "seg-video=6M-5-20000.mp4"
def test_no_placeholder_returns_unchanged() -> None:
url = "https://cdn.example.com/init.mp4"
assert DASH.replace_fields(url, Number=1, Time=0) is url
def test_printf_padding_applied() -> None:
# the '%05d' padding path must still fire when a '%' spec is present
url = "seg-$Number%05d$.mp4"
assert DASH.replace_fields(url, Number=7) == "seg-00007.mp4"
def test_printf_hex_padding_applied() -> None:
url = "seg-$Number%08x$.m4s"
assert DASH.replace_fields(url, Number=255) == "seg-000000ff.m4s"
def test_mixed_plain_and_padded_fields() -> None:
url = "$RepresentationID$/seg-$Number%04d$.mp4"
out = DASH.replace_fields(url, RepresentationID="v1", Number=42)
assert out == "v1/seg-0042.mp4"