Files
intercept/tests/test_hackrf_commands.py
T
James Smith 96172ca593 style: apply ruff-format to entire codebase
First-time run of ruff-format via pre-commit hook normalises quote
style, trailing commas, and whitespace across 188 Python files.
No logic changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-05 14:48:11 +01:00

85 lines
2.7 KiB
Python

"""Tests for HackRF command builder."""
from utils.sdr.base import SDRDevice, SDRType
from utils.sdr.hackrf import HackRFCommandBuilder
def _make_device(serial: str = "abc123") -> SDRDevice:
return SDRDevice(
sdr_type=SDRType.HACKRF,
index=0,
name="HackRF One",
serial=serial,
driver="hackrf",
capabilities=HackRFCommandBuilder.CAPABILITIES,
)
class TestHackRFCapabilities:
def test_gain_max_reflects_combined_lna_vga(self):
"""gain_max should be LNA(40) + VGA(62) = 102."""
assert HackRFCommandBuilder.CAPABILITIES.gain_max == 102.0
def test_frequency_range(self):
caps = HackRFCommandBuilder.CAPABILITIES
assert caps.freq_min_mhz == 1.0
assert caps.freq_max_mhz == 6000.0
def test_tx_capable(self):
assert HackRFCommandBuilder.CAPABILITIES.tx_capable is True
class TestSplitGain:
def test_low_gain_all_to_lna(self):
builder = HackRFCommandBuilder()
lna, vga = builder._split_gain(30)
assert lna == 30
assert vga == 0
def test_gain_at_lna_max(self):
builder = HackRFCommandBuilder()
lna, vga = builder._split_gain(40)
assert lna == 40
assert vga == 0
def test_high_gain_splits_across_stages(self):
builder = HackRFCommandBuilder()
lna, vga = builder._split_gain(80)
assert lna == 40
assert vga == 40
def test_max_combined_gain(self):
builder = HackRFCommandBuilder()
lna, vga = builder._split_gain(102)
assert lna == 40
assert vga == 62
class TestBuildAdsbCommand:
def test_contains_soapysdr_device_type(self):
builder = HackRFCommandBuilder()
cmd = builder.build_adsb_command(_make_device(), gain=40)
assert "--device-type" in cmd
assert "soapysdr" in cmd
def test_includes_serial_in_device_string(self):
builder = HackRFCommandBuilder()
cmd = builder.build_adsb_command(_make_device(serial="deadbeef"), gain=40)
device_idx = cmd.index("--device")
assert "deadbeef" in cmd[device_idx + 1]
class TestBuildIQCaptureCommand:
def test_outputs_cu8_to_stdout(self):
builder = HackRFCommandBuilder()
cmd = builder.build_iq_capture_command(_make_device(), frequency_mhz=100.0, sample_rate=2048000, gain=40)
assert "-F" in cmd
assert "CU8" in cmd
assert cmd[-1] == "-"
def test_gain_split_in_command(self):
builder = HackRFCommandBuilder()
cmd = builder.build_iq_capture_command(_make_device(), frequency_mhz=100.0, gain=80)
gain_idx = cmd.index("-g")
assert cmd[gain_idx + 1] == "LNA=40,VGA=40"