Spaces:
Sleeping
Sleeping
| """Shared fixtures for NeuralCAD tests.""" | |
| import pytest | |
| from pathlib import Path | |
| from agents.design_state import DesignState | |
| def tmp_output_dir(tmp_path): | |
| """Temporary output directory for model files.""" | |
| out = tmp_path / "output" | |
| out.mkdir() | |
| return out | |
| def sample_history(): | |
| """A typical multi-turn conversation history.""" | |
| return [ | |
| {"role": "user", "content": "I need a servo bracket for an MG996R"}, | |
| {"role": "agent", "agent_id": "design", "content": "I'd suggest an L-bracket with a servo pocket on the vertical face."}, | |
| {"role": "agent", "agent_id": "engineering", "content": "3mm wall thickness in aluminum 6061-T6 should handle the load."}, | |
| {"role": "user", "content": "Make it 60mm wide with M4 base mounting holes"}, | |
| ] | |
| def empty_design_state(): | |
| """Empty design state.""" | |
| return DesignState() | |
| def populated_design_state(): | |
| """Design state with some decisions already made.""" | |
| return DesignState( | |
| part_name="servo_bracket", | |
| material="aluminum 6061", | |
| dimensions={"width": 60.0}, | |
| features=["4x M4 holes"], | |
| decisions=["L-bracket form factor"], | |
| ) | |
| class FakeLLMBackend: | |
| """A controllable fake LLM backend for testing orchestrators.""" | |
| def __init__(self, response: str = '{"agents": []}'): | |
| self.response = response | |
| self.calls: list[list[dict]] = [] | |
| def generate(self, messages: list[dict]) -> str: | |
| self.calls.append(messages) | |
| return self.response | |
| def fake_backend(): | |
| """FakeLLMBackend factory — call with desired JSON response.""" | |
| def _make(response: str = '{"agents": []}'): | |
| return FakeLLMBackend(response) | |
| return _make | |