plano3d/pruebas/test_contrato.py

31 lines
1.0 KiB
Python
Raw Normal View History

"""Comprueba que motor.api cumple el contrato que usa la aplicación."""
from pathlib import Path
import cadquery as cq
from motor.api import Estado, Gravedad, Resultado, exportar, procesar
CATALOGO = Path(__file__).parent / "catalogo"
def test_procesar_devuelve_un_resultado_valido():
r = procesar(CATALOGO / "CUBE01" / "plano.dxf")
assert isinstance(r, Resultado)
assert r.estado in Estado
assert all(a.gravedad in Gravedad for a in r.avisos)
def test_cube01_tiene_el_volumen_esperado():
r = procesar(CATALOGO / "CUBE01" / "plano.dxf")
# Cubo de 200 mm menos el escalón (100^3) y el chaflán (100^3 / 2)
assert abs(r.solido.Volume() - 6_500_000) < 1
def test_exportar_step_y_stl(tmp_path):
r = procesar(CATALOGO / "CUBE01" / "plano.dxf")
for ext in (".step", ".stl"):
exportar(r.solido, tmp_path / f"pieza{ext}")
assert (tmp_path / f"pieza{ext}").stat().st_size > 0
releida = cq.importers.importStep(str(tmp_path / "pieza.step")).val()
assert releida.isValid()