1198f2e2ad
* Mesh vertex normals * Moved tests * test curve
62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
import pytest
|
|
|
|
from specklepy.core.api.operations import deserialize, serialize
|
|
from specklepy.objects.geometry import Point, PointCloud
|
|
from specklepy.objects.models.units import Units
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_points():
|
|
return [
|
|
Point(x=0.0, y=0.0, z=0.0, units=Units.m),
|
|
Point(x=1.0, y=0.0, z=0.0, units=Units.m),
|
|
Point(x=0.0, y=1.0, z=0.0, units=Units.m),
|
|
Point(x=1.0, y=1.0, z=0.0, units=Units.m),
|
|
]
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_point_cloud(sample_points):
|
|
return PointCloud(points=sample_points, units=Units.m)
|
|
|
|
|
|
def test_point_cloud_creation(sample_points):
|
|
point_cloud = PointCloud(points=sample_points, units=Units.m)
|
|
|
|
assert len(point_cloud.points) == 4
|
|
assert isinstance(point_cloud.points, list)
|
|
assert all(isinstance(p, Point) for p in point_cloud.points)
|
|
assert point_cloud.units == Units.m.value
|
|
|
|
|
|
def test_point_cloud_units(sample_points):
|
|
point_cloud = PointCloud(points=sample_points, units=Units.m)
|
|
assert point_cloud.units == Units.m.value
|
|
|
|
point_cloud.units = "mm"
|
|
assert point_cloud.units == "mm"
|
|
|
|
|
|
def test_point_cloud_empty_points():
|
|
point_cloud = PointCloud(points=[], units=Units.m)
|
|
assert len(point_cloud.points) == 0
|
|
assert isinstance(point_cloud.points, list)
|
|
|
|
|
|
def test_point_cloud_serialization(sample_point_cloud):
|
|
serialized = serialize(sample_point_cloud)
|
|
deserialized = deserialize(serialized)
|
|
|
|
assert isinstance(deserialized, PointCloud)
|
|
assert len(deserialized.points) == len(sample_point_cloud.points)
|
|
|
|
for orig_point, deserial_point in zip(
|
|
sample_point_cloud.points, deserialized.points, strict=True
|
|
):
|
|
assert deserial_point.x == orig_point.x
|
|
assert deserial_point.y == orig_point.y
|
|
assert deserial_point.z == orig_point.z
|
|
assert deserial_point.units == orig_point.units
|
|
|
|
assert deserialized.units == sample_point_cloud.units
|