Test vectors
Language-neutral vectors. Every SDK loads these files in its test suite, so an encoder or decoder change that breaks the wire format, or an argument rule that drifts in one language, fails in every language at once.
Conventions:
- Bytes are lowercase hex strings with no separators.
- Integer values are decimal strings, so 64-bit values survive JSON in every language.
- Each file names its source. Prefer examples from the MOQT draft text. Boundary cases derived from the encoding rules say so.
| File | Covers |
|---|---|
media.json |
Exact MSF catalog UTF-8 JSON (with a Media Timeline track entry), Media Timeline records, documents and retention, LOC properties, MSF source URLs, H.264 avcC and access units, Opus packet durations from the TOC byte (RFC 6716 §3.1), interrupts built and read, transcript segments built and read and a transcript’s steps, and rejected inputs |
clock.json |
The broadcast clock’s origin, source mapping, capture-clock and sample timelines, and the playout clock’s modes and wait/show/drop decisions, per ../media-layer.md “Shared timeline and playout clock”, and the origin’s Unix-epoch time, per its “Media Timeline track” |
varint.json |
MOQT variable-length integers, draft-ietf-moq-transport-22 §8.1 |
setup-options.json |
The PATH and AUTHORITY setup options the core sends for an endpoint URL and token, by framing, per ../transport-adapter.md TA-6 |
location-filter.json |
The LOCATION_FILTER parameter in both drafts the SDKs speak: draft-ietf-moq-transport-22 §9.20.9 and its draft-20 §5.1.2 spelling, the draft-20-only normalization, and rejected values |
arguments.json |
Namespace and track-name arguments the SDKs accept or reject locally, per the Arguments table in ../behavior.md. Properties and payloads are not portable through JSON and stay as mirrored tables in each suite |
track-status-ok.json |
TRACK_STATUS_OK as a publisher sends it (a REQUEST_OK with LARGEST_OBJECT when present and the Track Properties), draft-ietf-moq-transport-22 §9.3 and §9.13, the same on both drafts |
frame-sequencer.json |
Frame sequencer step sequences over a playout clock: ordering, waits, late drops, resyncs, restarts, and stats, per “Media subscribing” in ../behavior.md |
room-endpoint.json |
Room-rooted endpoint URLs roomEndpoint / room_endpoint builds, and the endpoints and rooms it refuses, per “Room-rooted endpoints” in ../behavior.md |
token-rooted-endpoint.json |
The endpoint a connect call given no endpoint dials for a token, and the tokens it refuses, per “Token-rooted endpoint” in ../behavior.md |
Planned: the rest of control message framing (track-status-ok.json is the first), parameters,
subgroup and fetch stream headers, and object status markers. The regression tests under ts/packages/moq-core/src/tests are the seed for those.
Media vectors use decimal strings for numeric inputs and hex for binary data. json is the exact
expected UTF-8 catalog text. Property type IDs are small JSON integers. Both SDKs consume every case
except the H.264 ones below.
The AVC codec-header vectors (h264) apply to both languages. The Annex B construction, error, and
access-unit conversion vectors (accessUnits, h264Errors) are Python-only. TypeScript takes avcC
and length-prefixed packets as supplied.