1198f2e2ad
* Mesh vertex normals * Moved tests * test curve
38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
import pytest
|
|
|
|
from specklepy.core.api.operations import deserialize, serialize
|
|
from specklepy.objects.geometry import Point
|
|
from specklepy.objects.models.units import Units
|
|
|
|
|
|
def test_point_creation():
|
|
p1 = Point(x=1.0, y=2.0, z=3.0, units=Units.m)
|
|
assert p1.x == 1.0
|
|
assert p1.y == 2.0
|
|
assert p1.z == 3.0
|
|
assert p1.units == Units.m.value
|
|
|
|
|
|
def test_point_distance_calculation():
|
|
p1 = Point(x=1.0, y=2.0, z=3.0, units=Units.m)
|
|
p2 = Point(x=4.0, y=6.0, z=8.0, units=Units.m)
|
|
|
|
distance = p1.distance_to(p2)
|
|
expected = (3.0**2 + 4.0**2 + 5.0**2) ** 0.5
|
|
assert distance == pytest.approx(expected)
|
|
|
|
with pytest.raises(TypeError):
|
|
p1.distance_to("not a point")
|
|
|
|
|
|
def test_point_serialization():
|
|
p1 = Point(x=1.0, y=2.0, z=3.0, units=Units.mm)
|
|
serialized = serialize(p1)
|
|
deserialized = deserialize(serialized)
|
|
|
|
assert isinstance(deserialized, Point)
|
|
assert deserialized.x == p1.x
|
|
assert deserialized.y == p1.y
|
|
assert deserialized.z == p1.z
|
|
assert deserialized.units == p1.units
|