mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-11-12 12:05:07 +00:00
perf(dash): speed up segment collection and URL templating
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
"""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"
|
||||
Reference in New Issue
Block a user