24 lines
956 B
Python
24 lines
956 B
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
import numpy as np
|
|
import pytest
|
|
|
|
from galileo_rx.navigation.decoder_diagnostics import load_prompt_epochs
|
|
from galileo_rx.navigation.e1b_symbol_sync import E1BSymbolSynchronizer
|
|
|
|
|
|
@pytest.mark.signalsim
|
|
def test_signalsim_prompt_artifact_recovers_soft_and_hard_symbols() -> None:
|
|
path = Path("verification/navigation/signalsim_navigation_multisat/prn_01/prompt_epochs.npz")
|
|
if not path.is_file():
|
|
pytest.skip("SignalSim navigation prompt artifact is unavailable; run collect-navigation first")
|
|
prompts = load_prompt_epochs(path, 1)
|
|
symbols = E1BSymbolSynchronizer(8, 0.1).process_many(prompts)
|
|
soft = np.asarray([item.soft_value for item in symbols], dtype=np.float64)
|
|
assert soft.dtype == np.float64
|
|
assert len(symbols) == 8044
|
|
assert np.count_nonzero([item.valid for item in symbols]) > 7500
|
|
assert {item.hard_value for item in symbols} == {0, 1}
|