import numpy as np from galileo_rx.config import AcquisitionConfig from galileo_rx.acquisition.fft_pcps import PcpsAcquisition from galileo_rx.signal_profiles import galileo_e1_profile from galileo_rx.signals.code_provider import SyntheticCodeProvider from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator def test_doppler_batched_matches_sequential() -> None: fs = 4.092e6 profile, provider = galileo_e1_profile(), SyntheticCodeProvider() generator = SyntheticSignalGenerator(profile, provider, fs, satellites=[SatelliteSignalConfig(1, doppler_hz=500)], channel=ChannelModelConfig(add_awgn=False)) samples, _ = generator.generate(int(0.004 * fs)) common = dict(doppler_min_hz=0, doppler_max_hz=1000, doppler_step_hz=250, noncoherent_accumulations=1, zero_padding_mode="none") sequential = PcpsAcquisition(profile, provider, fs, AcquisitionConfig(**common, parallelism="sequential")).search(samples, "E1C", 1) batched = PcpsAcquisition(profile, provider, fs, AcquisitionConfig(**common, parallelism="batched", doppler_batch_size=3)).search(samples, "E1C", 1) np.testing.assert_allclose(batched.power, sequential.power, rtol=1e-12, atol=1e-6)