Skip to content

Commit a911402

Browse files
committed
chore: add xyz to vector
1 parent 6950591 commit a911402

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

src/py/mat3ra/code/vector.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@ def __init__(self, root: List[float]):
1313
def value(self):
1414
return self.root
1515

16+
@property
17+
def x(self):
18+
return self.root[0]
19+
20+
@property
21+
def y(self):
22+
return self.root[1]
23+
24+
@property
25+
def z(self):
26+
return self.root[2]
27+
1628

1729
class RoundedVector3D(RoundNumericValuesMixin, Vector3D):
1830
def __init__(self, root: List[float]):
@@ -26,3 +38,15 @@ def to_dict(self, skip_rounding: bool = False) -> List[float]:
2638
@property
2739
def value_rounded(self):
2840
return self.to_dict()
41+
42+
@property
43+
def x_rounded(self):
44+
return self.value_rounded[0]
45+
46+
@property
47+
def y_rounded(self):
48+
return self.value_rounded[1]
49+
50+
@property
51+
def z_rounded(self):
52+
return self.value_rounded[2]

tests/py/unit/test_vector.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
def test_vector_init():
99
vector = Vector3D(VECTOR_FLOAT)
1010
assert vector.model_dump() == VECTOR_FLOAT
11+
assert vector.value == VECTOR_FLOAT
12+
assert vector.x == 1.234567890
13+
assert vector.y == 2.345678901
14+
assert vector.z == 3.456789012
1115

1216

1317
def test_vector_init_wrong_type():
@@ -28,6 +32,7 @@ def test_vector_init_wrong_size():
2832
def test_rounded_vector_init():
2933
vector = RoundedVector3D(VECTOR_FLOAT)
3034
assert vector.model_dump() == VECTOR_FLOAT
35+
assert vector.value == VECTOR_FLOAT
3136

3237

3338
def test_rounded_vector_serialization():
@@ -36,6 +41,12 @@ def test_rounded_vector_serialization():
3641
vector = class_reference(VECTOR_FLOAT)
3742
assert vector.model_dump() == VECTOR_FLOAT_ROUNDED_4
3843
assert vector.value_rounded == VECTOR_FLOAT_ROUNDED_4
44+
assert vector.x == VECTOR_FLOAT[0]
45+
assert vector.y == VECTOR_FLOAT[1]
46+
assert vector.z == VECTOR_FLOAT[2]
47+
assert vector.x_rounded == VECTOR_FLOAT_ROUNDED_4[0]
48+
assert vector.y_rounded == VECTOR_FLOAT_ROUNDED_4[1]
49+
assert vector.z_rounded == VECTOR_FLOAT_ROUNDED_4[2]
3950
assert vector.value == VECTOR_FLOAT
4051

4152
class_reference = RoundedVector3D
@@ -44,3 +55,9 @@ def test_rounded_vector_serialization():
4455
assert vector.model_dump() == VECTOR_FLOAT_ROUNDED_3
4556
assert vector.value_rounded == VECTOR_FLOAT_ROUNDED_3
4657
assert vector.value == VECTOR_FLOAT
58+
assert vector.x == VECTOR_FLOAT[0]
59+
assert vector.y == VECTOR_FLOAT[1]
60+
assert vector.z == VECTOR_FLOAT[2]
61+
assert vector.x_rounded == VECTOR_FLOAT_ROUNDED_3[0]
62+
assert vector.y_rounded == VECTOR_FLOAT_ROUNDED_3[1]
63+
assert vector.z_rounded == VECTOR_FLOAT_ROUNDED_3[2]

0 commit comments

Comments
 (0)