"""geometry テスト共通フィクスチャ.
テスト用 STL ファイルを tmp_path に生成して返す.
モックは使わず実ファイルで検証する(testing.md モック方針).
"""
import pathlib
import numpy
import pytest
import trimesh
@pytest.fixture
def tetrahedron_stl(tmp_path: pathlib.Path) -> pathlib.Path:
"""四面体 STL を tmp_path に書き出してそのパスを返す.
頂点数 4, 面数 4 の最小三角形メッシュ.
"""
vertices = numpy.array(
[
[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[0.5, 1.0, 0.0],
[0.5, 0.5, 1.0],
],
dtype=numpy.float64,
)
faces = numpy.array(
[
[0, 1, 2],
[0, 1, 3],
[0, 2, 3],
[1, 2, 3],
],
dtype=numpy.int64,
)
mesh = trimesh.Trimesh(vertices=vertices, faces=faces)
path = tmp_path / "shape.stl"
mesh.export(str(path))
return path
@pytest.fixture
def cube_stl(tmp_path: pathlib.Path) -> pathlib.Path:
"""立方体 STL を tmp_path に書き出してそのパスを返す.
trimesh.creation.box() で生成: 頂点数 8, 面数 12.
"""
mesh = trimesh.creation.box()
path = tmp_path / "cube.stl"
mesh.export(str(path))
return path