Files
autocad-mcp-pro/tests/test_layer_block.py
2026-04-27 12:20:57 +03:00

114 lines
3.6 KiB
Python

"""Tests for layer and block operations via ezdxf backend."""
from __future__ import annotations
import pytest
pytestmark = pytest.mark.asyncio
# ---------------------------------------------------------------------------
# Layer tests
# ---------------------------------------------------------------------------
async def test_layer_create(backend):
result = await backend.layer_create("WALLS", color=1)
assert result.name == "WALLS"
assert result.color == 1
async def test_layer_list(backend):
await backend.layer_create("A")
await backend.layer_create("B")
layers = await backend.layer_list()
names = [lyr.name for lyr in layers]
assert "A" in names
assert "B" in names
async def test_layer_delete(backend):
await backend.layer_create("TEMP")
result = await backend.layer_delete("TEMP")
assert result.get("ok") is True
layers = await backend.layer_list()
names = [lyr.name for lyr in layers]
assert "TEMP" not in names
async def test_layer_set_current(backend):
await backend.layer_create("CURRENT_TEST")
result = await backend.layer_set_current("CURRENT_TEST")
assert result.get("ok") is True
async def test_layer_modify(backend):
await backend.layer_create("MOD_LAYER", color=1)
result = await backend.layer_modify("MOD_LAYER", color=3)
assert result.color == 3
async def test_layer_freeze_thaw(backend):
await backend.layer_create("FREEZE_TEST")
result = await backend.layer_freeze("FREEZE_TEST")
assert result.get("ok") is True
result = await backend.layer_thaw("FREEZE_TEST")
assert result.get("ok") is True
async def test_layer_lock_unlock(backend):
await backend.layer_create("LOCK_TEST")
result = await backend.layer_lock("LOCK_TEST")
assert result.get("ok") is True
result = await backend.layer_unlock("LOCK_TEST")
assert result.get("ok") is True
async def test_layer_hide_show(backend):
await backend.layer_create("VIS_TEST")
result = await backend.layer_hide("VIS_TEST")
assert result.get("ok") is True
result = await backend.layer_show("VIS_TEST")
assert result.get("ok") is True
# ---------------------------------------------------------------------------
# Block tests
# ---------------------------------------------------------------------------
async def test_block_create_and_list(backend):
line = await backend.entity_create_line(0, 0, 10, 0)
circle = await backend.entity_create_circle(5, 5, 3)
result = await backend.block_create_from_entities(
"MY_BLOCK", [line.handle, circle.handle], base_x=0, base_y=0
)
assert result.get("ok") is True
blocks = await backend.block_list()
block_names = [b.name for b in blocks]
assert "MY_BLOCK" in block_names
async def test_block_insert(backend):
line = await backend.entity_create_line(0, 0, 10, 0)
await backend.block_create_from_entities("INS_BLOCK", [line.handle])
result = await backend.block_insert("INS_BLOCK", 50, 50)
assert result.handle
assert result.type == "INSERT"
async def test_block_explode(backend):
line = await backend.entity_create_line(0, 0, 10, 0)
await backend.block_create_from_entities("EXPLODE_BLK", [line.handle])
ref = await backend.block_insert("EXPLODE_BLK", 0, 0)
result = await backend.block_explode(ref.handle)
assert result.get("ok") is True
async def test_block_get_attributes(backend):
line = await backend.entity_create_line(0, 0, 10, 0)
await backend.block_create_from_entities("ATTR_BLK", [line.handle])
ref = await backend.block_insert("ATTR_BLK", 0, 0)
attrs = await backend.block_get_attributes(ref.handle)
assert isinstance(attrs, dict)