Files
specklepy/tests/objects/test_point_cloud.py
T
Jedd Morgan 1198f2e2ad Feat(objects): Added Vertex Normals to Mesh (#404)
* Mesh vertex normals

* Moved tests

* test curve
2025-04-25 14:39:04 +00:00

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