50 lines
2.0 KiB
Python
50 lines
2.0 KiB
Python
"""Checks for the tracked RF-001A decoder truth artifact."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
SPEC_PATH = ROOT / "configs" / "rf" / "rf001a_common_clock.json"
|
|
TRUTH_PATH = ROOT / "configs" / "rf" / "rf001a_truth_metadata.json"
|
|
|
|
|
|
def test_truth_metadata_is_small_complete_and_spec_aligned() -> None:
|
|
spec = json.loads(SPEC_PATH.read_text(encoding="utf-8"))
|
|
truth = json.loads(TRUTH_PATH.read_text(encoding="utf-8"))
|
|
|
|
assert TRUTH_PATH.stat().st_size < 64 * 1024
|
|
assert truth["shared_spec_test_id"] == spec["test_id"]
|
|
assert truth["test_id"] == spec["legacy_waveform_test_id"]
|
|
assert truth["seed"] == spec["seed"]
|
|
assert truth["packet_count"] == spec["packet_count"] == 100
|
|
assert truth["payload_size"] == spec["application_payload_bytes"] == 256
|
|
assert truth["application_payload_bytes"] == truth["payload_size"]
|
|
assert truth["expected_sequence_numbers"] == list(range(100))
|
|
assert len(truth["expected_packet_hashes"]) == 100
|
|
assert [
|
|
row["sequence_number"] for row in truth["expected_packet_hashes"]
|
|
] == list(range(100))
|
|
assert all(
|
|
len(row["payload_sha256"]) == 64 and len(row["packet_sha256"]) == 64
|
|
for row in truth["expected_packet_hashes"]
|
|
)
|
|
assert truth["tx_waveform_sha256"] == spec["expected_hardware_sha256"]
|
|
assert truth["iq_sha256"] == spec["expected_canonical_sha256"]
|
|
assert truth["modulation"] == spec["modulation"]
|
|
assert truth["symbol_rate"] == spec["symbol_rate_sps"]
|
|
assert truth["sample_rate"] == spec["sample_rate_hz"]
|
|
assert truth["fec"] == spec["inner_fec"]
|
|
assert truth["fec_rate"] == truth["fec"]
|
|
assert truth["gap_ms"] == spec["inter_packet_gap_ms"]
|
|
assert truth["inter_packet_gap_ms"] == truth["gap_ms"]
|
|
assert (
|
|
truth["digital_carrier_offset_hz"]
|
|
== spec["digital_carrier_offset_hz"]
|
|
)
|
|
assert truth["tx_waveform_format"] == spec["hardware_format"]
|
|
assert "waveform" not in truth
|
|
assert "raw_iq" not in truth
|