Files
PozzettiAndrea-ComfyUI-Geom…/tests/test_scripts/test_primitives.py
T
2025-11-14 21:43:06 +01:00

65 lines
2.1 KiB
Python

"""Tests for primitive generation (CreatePrimitive)."""
import pytest
from nodes.primitives import CreatePrimitive
@pytest.mark.unit
@pytest.mark.parametrize("shape,expected_verts", [
("cube", 8),
("plane", 4),
])
def test_create_primitive_shapes(shape, expected_verts, render_helper, save_mesh_helper):
"""Test creating different primitive shapes."""
node = CreatePrimitive()
mesh = node.create_primitive(shape=shape, size=1.0)[0]
assert mesh is not None
assert mesh.vertices.shape[0] >= expected_verts
assert mesh.faces.shape[0] > 0
assert mesh.is_watertight or shape == "plane"
save_mesh_helper(mesh, f"primitive_{shape}", "obj")
render_helper(mesh, f"primitive_{shape}")
@pytest.mark.unit
def test_create_sphere(render_helper, save_mesh_helper):
"""Test creating sphere primitive."""
node = CreatePrimitive()
mesh = node.create_primitive(shape="sphere", size=1.0)[0]
assert mesh is not None
assert mesh.vertices.shape[0] > 10
assert mesh.is_watertight
# Size parameter is diameter, so radius = size/2
assert abs(mesh.bounding_sphere.primitive.radius - 0.5) < 0.1
save_mesh_helper(mesh, "primitive_sphere", "obj")
render_helper(mesh, "primitive_sphere")
@pytest.mark.unit
def test_create_primitive_with_subdivisions(render_helper, save_mesh_helper):
"""Test creating primitive with subdivisions."""
node = CreatePrimitive()
mesh_sub0 = node.create_primitive(shape="sphere", size=1.0, subdivisions=0)[0]
mesh_sub2 = node.create_primitive(shape="sphere", size=1.0, subdivisions=2)[0]
assert mesh_sub2.vertices.shape[0] > mesh_sub0.vertices.shape[0]
save_mesh_helper(mesh_sub2, "primitive_sphere_subdivided", "obj")
render_helper(mesh_sub2, "primitive_sphere_subdivided")
@pytest.mark.unit
@pytest.mark.parametrize("size", [0.5, 1.0, 2.0])
def test_create_primitive_sizes(size):
"""Test creating primitives with different sizes."""
node = CreatePrimitive()
mesh = node.create_primitive(shape="cube", size=size)[0]
bounds = mesh.bounds
extent = bounds[1] - bounds[0]
assert all(extent >= size * 0.9)