Files
stl-repo/tests/test_parsers.py
Consultoria AS 14b307110d feat: implementar 12 mejoras, tests, docs y optimizaciones
- Fase A: license templates, search history, cost estimator
- Fase B: import URL, bulk ZIP, batch download
- Fase C: comparison mode, mesh validation, measurement tool
- Fase D: cross-section clipping, overhang heatmap, layer animation
- Refactor Pydantic/SQLAlchemy warnings
- 24 tests pytest
- README actualizado
- WebP thumbnails, lazy loading, cache headers
2026-04-27 09:14:58 +00:00

123 lines
2.7 KiB
Python

import os
import numpy as np
from app.parsers import parse_stl_file, parse_3mf_file, generate_thumbnail, generate_generic_thumbnail
TEST_DIR = os.path.dirname(os.path.abspath(__file__))
PROJECT_DIR = os.path.dirname(TEST_DIR)
def test_parse_ascii_stl():
path = os.path.join(PROJECT_DIR, 'test_cube.stl')
if not os.path.exists(path):
# Create a simple ASCII STL for testing
with open(path, 'w') as f:
f.write("""solid cube
facet normal 0 0 -1
outer loop
vertex 0 0 0
vertex 10 0 0
vertex 10 10 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0 0 0
vertex 10 10 0
vertex 0 10 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0 0 10
vertex 10 10 10
vertex 10 0 10
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0 0 10
vertex 0 10 10
vertex 10 10 10
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 0 0 0
vertex 0 10 10
vertex 0 0 10
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 0 0 0
vertex 0 10 0
vertex 0 10 10
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 10 0 0
vertex 10 0 10
vertex 10 10 10
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 10 0 0
vertex 10 10 10
vertex 10 10 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 0 0 0
vertex 0 0 10
vertex 10 0 10
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 0 0 0
vertex 10 0 10
vertex 10 0 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 0 10 0
vertex 10 10 0
vertex 10 10 10
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 0 10 0
vertex 10 10 10
vertex 0 10 10
endloop
endfacet
endsolid cube
""")
result = parse_stl_file(path)
assert result['faces'] == 12
assert abs(result['width'] - 10.0) < 0.1
assert abs(result['height'] - 10.0) < 0.1
assert abs(result['depth'] - 10.0) < 0.1
assert len(result['vertices']) == 36 # 12 triangles * 3 vertices
def test_generate_thumbnail():
path = os.path.join(PROJECT_DIR, 'test_cube.stl')
result = parse_stl_file(path)
out_path = os.path.join(PROJECT_DIR, 'test_thumb.png')
generate_thumbnail(result['vertices'], out_path, size=128)
assert os.path.exists(out_path)
os.remove(out_path)
def test_generate_generic_thumbnail():
out_path = os.path.join(PROJECT_DIR, 'test_generic.png')
generate_generic_thumbnail(out_path, size=128, label='3MF')
assert os.path.exists(out_path)
os.remove(out_path)