Files
autocad-mcp-pro/tests/test_drawing_settings.py
T
Umutcan EdizsalanandCursor 9ec6c4a989 style: apply ruff format across the repository
ruff format was never run repo-wide; CI now enforces 'ruff format --check', so normalize every module once. No behavior changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:14:51 +03:00

81 lines
2.6 KiB
Python

"""Tests for the drawing_settings facade — friendly read/change of AutoCAD
system variables (units, precision, scales, osnap, …)."""
from __future__ import annotations
import pytest
pytestmark = pytest.mark.asyncio
async def test_read_snapshot_returns_known_keys(backend):
snap = await backend.drawing_settings()
assert snap["ok"] is True
s = snap["settings"]
for key in ("units", "linear_precision", "ltscale", "dimscale", "osmode"):
assert key in s
async def test_set_and_read_back_units_by_name(backend):
res = await backend.drawing_settings({"units": "mm"})
assert res["ok"] is True
assert res["applied"]["units"] == "mm"
snap = await backend.drawing_settings()
assert snap["settings"]["units"]["name"] == "mm"
assert snap["settings"]["units"]["code"] == 4
async def test_set_units_cm_and_inch_codes(backend):
await backend.drawing_settings({"units": "cm"})
assert (await backend.drawing_settings())["settings"]["units"]["code"] == 5
await backend.drawing_settings({"units": "inch"})
assert (await backend.drawing_settings())["settings"]["units"]["code"] == 1
async def test_set_numeric_settings(backend):
res = await backend.drawing_settings(
{
"dimscale": 2.0,
"linear_precision": 3,
"ltscale": 0.5,
}
)
assert res["ok"] is True
snap = (await backend.drawing_settings())["settings"]
assert snap["dimscale"] == 2.0
assert snap["linear_precision"] == 3
assert snap["ltscale"] == 0.5
async def test_unknown_key_reports_error_without_failing_others(backend):
res = await backend.drawing_settings({"dimscale": 1.5, "bogus_key": 1})
assert res["applied"]["dimscale"] == 1.5
assert "bogus_key" in res["errors"]
assert res["ok"] is False
async def test_bad_unit_value_is_reported(backend):
res = await backend.drawing_settings({"units": "furlongs"})
assert "units" in res["errors"]
# ── server tool wiring ──────────────────────────────────────────────────────
class _FakeCtx:
def __init__(self, backend):
self.lifespan_context = {"backend": backend}
async def info(self, *a, **k):
pass
async def test_server_tool_reads_and_writes(backend):
import server
ctx = _FakeCtx(backend)
write = await server.drawing_settings(settings={"units": "mm", "dimscale": 1.0}, ctx=ctx)
assert write["ok"] is True
read = await server.drawing_settings(ctx=ctx)
assert read["settings"]["units"]["name"] == "mm"