Files
galileo/tests/unit/test_discriminators.py
T

33 lines
981 B
Python

import numpy as np
from galileo_rx.tracking.discriminators import (
dll_noncoherent_power_chips,
dll_normalized_envelope_chips,
fll_bpsk_phase_difference_hz,
fll_phase_difference_hz,
pll_four_quadrant_rad,
pll_two_quadrant_rad,
)
def test_pll_discriminator_sign_and_units() -> None:
prompt = np.exp(1j * 0.2)
assert abs(pll_four_quadrant_rad(prompt) - 0.2) < 1e-12
assert abs(pll_two_quadrant_rad(prompt) - 0.2) < 1e-12
def test_fll_phase_difference_is_hz() -> None:
dt = 0.004
assert abs(fll_phase_difference_hz(1 + 0j, np.exp(2j * np.pi * 10 * dt), dt) - 10.0) < 1e-12
def test_bpsk_fll_rejects_data_sign_transition() -> None:
dt = 0.004
prompt = -np.exp(2j * np.pi * 10 * dt)
assert abs(fll_bpsk_phase_difference_hz(1 + 0j, prompt, dt) - 10.0) < 1e-12
def test_dll_sign() -> None:
assert dll_normalized_envelope_chips(2 + 0j, 1 + 0j, 0.25) > 0
assert dll_noncoherent_power_chips(2 + 0j, 1 + 0j, 0.25) > 0