gr-mcp/tests/test_flowgraph.py

47 lines
1.5 KiB
Python

from typing import List
import pytest
from gnuradio.grc.core.platform import Platform
from gnuradio_mcp.middlewares.flowgraph import FlowGraphMiddleware
from gnuradio import gr
from gnuradio_mcp.models import BlockModel
from .utils import get_block_keys, add_block, remove_block, get_current_blocks
@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 = get_block_keys(platform)
assert block_keys, "No blocks available in platform library."
block_name = f"test_block_{block_key}"
add_block(flowgraph_middleware, 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)
remove_block(flowgraph_middleware, block_name)
current_blocks = get_current_blocks(flowgraph_middleware)
assert current_blocks == initial_blocks
def test_flowgraph_initial_state(
flowgraph_middleware: FlowGraphMiddleware, initial_blocks: List[BlockModel]
):
assert flowgraph_middleware.blocks == initial_blocks