From eb0d9fd6be030e3d611d9f19b92114095d8cb01f Mon Sep 17 00:00:00 2001 From: Yoel Bassin Date: Sat, 26 Apr 2025 16:08:09 +0300 Subject: [PATCH] main - feat: Add real gnuradio data to tests --- src/gnuradio_mcp/middlewares/platform.py | 11 +------ src/gnuradio_mcp/models.py | 11 +++++++ tests/test_platform.py | 42 +++++++++++------------- 3 files changed, 32 insertions(+), 32 deletions(-) create mode 100644 src/gnuradio_mcp/models.py diff --git a/src/gnuradio_mcp/middlewares/platform.py b/src/gnuradio_mcp/middlewares/platform.py index fb2a63a..600d20e 100644 --- a/src/gnuradio_mcp/middlewares/platform.py +++ b/src/gnuradio_mcp/middlewares/platform.py @@ -1,16 +1,7 @@ from typing import List from gnuradio.grc.core.platform import Platform -from pydantic import BaseModel -from gnuradio.grc.core.blocks.block import Block - -class BlockModel(BaseModel): - label: str - key: str - - @classmethod - def from_block(cls, block: Block) -> "BlockModel": - return cls(label=block.label, key=block.key) +from gnuradio_mcp.models import BlockModel class PlatformMiddleware: def __init__(self, platform: Platform): diff --git a/src/gnuradio_mcp/models.py b/src/gnuradio_mcp/models.py new file mode 100644 index 0000000..f0efefb --- /dev/null +++ b/src/gnuradio_mcp/models.py @@ -0,0 +1,11 @@ +from pydantic import BaseModel +from gnuradio.grc.core.blocks.block import Block + + +class BlockModel(BaseModel): + label: str + key: str + + @classmethod + def from_block(cls, block: Block) -> "BlockModel": + return cls(label=block.label, key=block.key) \ No newline at end of file diff --git a/tests/test_platform.py b/tests/test_platform.py index 5f4d4f3..455d5f4 100644 --- a/tests/test_platform.py +++ b/tests/test_platform.py @@ -1,31 +1,29 @@ import pytest from gnuradio_mcp.middlewares.platform import BlockModel, PlatformMiddleware +from gnuradio.grc.core.blocks.block import Block +from gnuradio.grc.core.platform import Platform +from gnuradio import gr -class MockBlock: - def __init__(self, label, key): - self.label = label - self.key = key +@pytest.fixture +def platform() -> Platform: + platform = Platform( + version=gr.version(), + version_parts=(gr.major_version(), gr.api_version(), gr.minor_version()), + prefs=gr.prefs(), + ) + platform.build_library() + return platform -class MockPlatform: - def __init__(self, blocks): - self.blocks = {block.key: block for block in blocks} -def test_block_model_from_block(): - block = MockBlock(label="Test Block", key="test_key") +def test_block_model_from_block(platform): + block = Block(platform) model = BlockModel.from_block(block) - assert model.label == "Test Block" - assert model.key == "test_key" + assert model.label == block.label + assert model.key == block.key -def test_platform_middleware_blocks(): - blocks = [ - MockBlock(label="Block A", key="a"), - MockBlock(label="Block B", key="b"), - ] - platform = MockPlatform(blocks) + +def test_platform_middleware_blocks(platform): middleware = PlatformMiddleware(platform) block_models = middleware.blocks - assert len(block_models) == 2 - assert block_models[0].label == "Block A" - assert block_models[0].key == "a" - assert block_models[1].label == "Block B" - assert block_models[1].key == "b" + assert block_models # Checks that the list is not empty + assert all(isinstance(block_model, BlockModel) for block_model in block_models)