Spaces:
Sleeping
Sleeping
File size: 3,218 Bytes
7c72eb2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | import time
import pytest
from server.executor import execute_cadquery_code
class TestExecuteValidCode:
def test_flat_plate_executes(self, flat_plate_code):
result = execute_cadquery_code(flat_plate_code, timeout=15.0)
assert result["success"] is True
assert result["error"] is None
assert result["properties"] is not None
def test_flat_plate_properties(self, flat_plate_code):
result = execute_cadquery_code(flat_plate_code, timeout=15.0)
props = result["properties"]
assert props["is_valid"] is True
assert props["volume_mm3"] > 0
assert abs(props["volume_mm3"] - 16000.0) < 1.0
assert props["face_count"] == 6
assert props["dominant_face_type"] == "PLANE"
def test_flat_plate_bbox(self, flat_plate_code):
result = execute_cadquery_code(flat_plate_code, timeout=15.0)
props = result["properties"]
assert abs(props["bbox_x_mm"] - 80.0) < 0.01
assert abs(props["bbox_y_mm"] - 40.0) < 0.01
assert abs(props["bbox_z_mm"] - 5.0) < 0.01
def test_box_with_hole_executes(self, box_with_hole_code):
result = execute_cadquery_code(box_with_hole_code, timeout=15.0)
assert result["success"] is True
props = result["properties"]
assert props["is_valid"] is True
assert props["volume_mm3"] > 0
assert props["face_count"] > 6
def test_box_with_hole_has_cylinder_face(self, box_with_hole_code):
result = execute_cadquery_code(box_with_hole_code, timeout=15.0)
props = result["properties"]
assert "CYLINDER" in props["face_type_counts"]
def test_euler_characteristic(self, flat_plate_code):
result = execute_cadquery_code(flat_plate_code, timeout=15.0)
props = result["properties"]
assert props["euler_characteristic"] == 2
def test_box_with_hole_euler(self, box_with_hole_code):
result = execute_cadquery_code(box_with_hole_code, timeout=15.0)
props = result["properties"]
assert props["euler_characteristic"] == 2
class TestExecuteInvalidCode:
def test_syntax_error(self, invalid_code):
result = execute_cadquery_code(invalid_code, timeout=15.0)
assert result["success"] is False
assert result["error"] is not None
def test_no_result_variable(self, no_result_code):
result = execute_cadquery_code(no_result_code, timeout=15.0)
assert result["success"] is False
assert "result" in result["error"].lower()
def test_empty_code(self):
result = execute_cadquery_code("", timeout=15.0)
assert result["success"] is False
def test_runtime_error(self):
code = "import cadquery as cq\nresult = cq.Workplane('XY').box(0, 0, 0)"
result = execute_cadquery_code(code, timeout=15.0)
if result["success"]:
assert result["properties"]["volume_mm3"] == 0
class TestExecuteTimeout:
def test_timeout_returns_error(self, timeout_code):
result = execute_cadquery_code(timeout_code, timeout=2.0)
assert result["success"] is False
assert "timed out" in result["error"].lower() or "timeout" in result["error"].lower()
|