import pytest from ..src.interfaces.pulseq_adapter import PulseqLoader from ..src.hardware.constraints import HardwareConstraints @pytest.fixture def hw(): return HardwareConstraints() def test_pulseq_loader_removes_zero_duration_blocks(hw): loader = PulseqLoader(hw) seq_mock = { "block_events": [1, 2, 3, 4, 5], # 5 блоков "block_durations": {1: 5e-3, 2: 0, 3: 3e-3, 4: 0, 5: 1e-3}, # Второй и четвёртый блоки = 0 (должны удалиться) "blocks": { 1: {"rf": True, "gx": None, "gy": None, "gz": None, "adc": None}, 2: {"rf": None, "gx": None, "gy": None, "gz": None, "adc": None}, # Длительность 0 (удалится) 3: {"rf": None, "gx": True, "gy": None, "gz": None, "adc": None}, 4: {"rf": None, "gx": None, "gy": None, "gz": None, "adc": None}, # Длительность 0 (удалится) 5: {"rf": None, "gx": None, "gy": None, "gz": None, "adc": True}, } } parsed_blocks = loader._parse_blocks(seq_mock) # Проверяем, что блоки с нулевой длительностью удалены assert len(parsed_blocks) == 3 # Было 5, удалилось 2 assert parsed_blocks[0]["type"] == "RF" assert parsed_blocks[1]["type"] == "GRAD" assert parsed_blocks[2]["type"] == "GRAD"