from __future__ import annotations import pytest from gnuradio.grc.core.platform import Platform from gnuradio_mcp.middlewares.flowgraph import FlowGraphMiddleware from gnuradio_mcp.models import BlockModel @pytest.fixture def flowgraph_middleware(platform: Platform): flowgraph = platform.make_flow_graph("") return FlowGraphMiddleware(flowgraph) @pytest.fixture def initial_blocks(flowgraph_middleware: FlowGraphMiddleware): return [ BlockModel(key=block.key, label=block.label) for block in flowgraph_middleware._flowgraph.blocks ] def test_flowgraph_block_addition_and_removal( flowgraph_middleware: FlowGraphMiddleware, platform: Platform, initial_blocks: list[BlockModel], block_key: str, ): block_keys = platform.blocks.keys() assert block_keys, "No blocks available in platform library." block_name = f"test_block_{block_key}" flowgraph_middleware.add_block(block_key, block_name) blocks = flowgraph_middleware.blocks assert all(b in blocks for b in initial_blocks) assert any(b.key == block_key for b in blocks) flowgraph_middleware._flowgraph.remove_element( flowgraph_middleware._flowgraph.get_block(block_name), ) current_blocks = [ BlockModel(key=block.key, label=block.label) for block in flowgraph_middleware._flowgraph.blocks ] assert current_blocks == initial_blocks def test_flowgraph_initial_state( flowgraph_middleware: FlowGraphMiddleware, initial_blocks: list[BlockModel], ): assert flowgraph_middleware.blocks == initial_blocks