Files
KatKatKateryna 95de5cbb30
Publish Python Package / continuous-integration (3.10) (push) Has been cancelled
Publish Python Package / continuous-integration (3.11) (push) Has been cancelled
Publish Python Package / continuous-integration (3.12) (push) Has been cancelled
Publish Python Package / continuous-integration (3.13) (push) Has been cancelled
Publish Python Package / Build and Publish Python Package (push) Has been cancelled
Introducing Text class (#419)
* add text class and tests

* formatting

* fix default values

* comments

* comment

* sort imports

* import alignments

* compare properties, not Base objects

* revert irrelevant changes

* tests

* use correct fixture

* fix tests property
2025-05-06 10:12:29 +01:00

101 lines
3.7 KiB
Python

import pytest
from specklepy.core.api.operations import deserialize, serialize
from specklepy.objects.annotation import AlignmentHorizontal, AlignmentVertical, Text
from specklepy.objects.geometry import Plane, Point, Vector
from specklepy.objects.models.units import Units
@pytest.fixture
def sample_point() -> Point:
return Point(x=0.0, y=0.0, z=0.0, units=Units.m)
@pytest.fixture
def sample_plane(sample_point: Point) -> Plane:
normal = Vector(x=0.0, y=0.0, z=1.0, units=Units.m)
xdir = Vector(x=1.0, y=0.0, z=0.0, units=Units.m)
ydir = Vector(x=0.0, y=1.0, z=0.0, units=Units.m)
return Plane(
origin=sample_point, normal=normal, xdir=xdir, ydir=ydir, units=Units.m
)
@pytest.fixture
def sample_text(sample_point: Point) -> Text:
return Text(value="text", origin=sample_point, height=0.5, units=Units.m)
@pytest.fixture
def sample_text_all_properties(sample_point: Point, sample_plane: Plane) -> Text:
return Text(
value="text",
origin=sample_point,
height=0.5,
alignmentH=AlignmentHorizontal.Center,
alignmentV=AlignmentVertical.Center,
plane=sample_plane,
maxWidth=20,
units=Units.m,
)
def test_text_creation_minimal(sample_point: Point):
text_value = "text"
text_obj = Text(value=text_value, origin=sample_point, height=0.5, units=Units.m)
assert text_obj.value == text_value
assert text_obj.origin == sample_point
assert text_obj.height == 0.5
assert text_obj.alignmentH == AlignmentHorizontal.Left
assert text_obj.alignmentV == AlignmentVertical.Top
assert text_obj.plane is None
assert text_obj.maxWidth is None
assert text_obj.units == Units.m.value
def test_text_creation_extended(sample_point: Point, sample_plane: Plane):
text_value = "text"
max_width = 20
text_obj = Text(
value=text_value,
origin=sample_point,
height=0.5,
alignmentH=AlignmentHorizontal.Center,
alignmentV=AlignmentVertical.Center,
plane=sample_plane,
maxWidth=max_width,
units=Units.m,
)
assert text_obj.value == text_value
assert text_obj.origin == sample_point
assert text_obj.height == 0.5
assert text_obj.alignmentH == AlignmentHorizontal.Center
assert text_obj.alignmentV == AlignmentVertical.Center
assert text_obj.plane == sample_plane
assert text_obj.maxWidth == max_width
assert text_obj.units == Units.m.value
def test_point_serialization(sample_text_all_properties: Text):
serialized = serialize(sample_text_all_properties)
deserialized = deserialize(serialized)
assert isinstance(deserialized, Text)
assert deserialized.value == sample_text_all_properties.value
assert deserialized.origin.x == sample_text_all_properties.origin.x
assert deserialized.origin.y == sample_text_all_properties.origin.y
assert deserialized.origin.z == sample_text_all_properties.origin.z
assert deserialized.height == sample_text_all_properties.height
assert deserialized.alignmentH == sample_text_all_properties.alignmentH
assert deserialized.alignmentV == sample_text_all_properties.alignmentV
assert deserialized.plane.origin.x == sample_text_all_properties.plane.origin.x
assert deserialized.plane.origin.y == sample_text_all_properties.plane.origin.y
assert deserialized.plane.origin.z == sample_text_all_properties.plane.origin.z
assert deserialized.plane.normal.x == sample_text_all_properties.plane.normal.x
assert deserialized.plane.normal.y == sample_text_all_properties.plane.normal.y
assert deserialized.plane.normal.z == sample_text_all_properties.plane.normal.z
assert deserialized.maxWidth == sample_text_all_properties.maxWidth
assert deserialized.units == sample_text_all_properties.units