open-space-toolkit-mathematics 3.0.2__py38-none-manylinux2014_aarch64.whl → 3.1.1__py38-none-manylinux2014_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of open-space-toolkit-mathematics might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: open-space-toolkit-mathematics
3
- Version: 3.0.2
3
+ Version: 3.1.1
4
4
  Summary: Geometry, curve fitting, optimization.
5
5
  Author: Open Space Collective
6
6
  Author-email: contact@open-space-collective.org
@@ -1,15 +1,15 @@
1
1
  ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
2
- ostk/mathematics/OpenSpaceToolkitMathematicsPy.cpython-38-aarch64-linux-gnu.so,sha256=mlEkhGAuhuwV5LKanE6UC0KMq77IZ1PUbpiEgffmeJE,1312256
2
+ ostk/mathematics/OpenSpaceToolkitMathematicsPy.cpython-38-aarch64-linux-gnu.so,sha256=QQ052HQRag58WFICVMtXfuVfY8CdYsg3pvA5HwKz4Ts,1443480
3
3
  ostk/mathematics/__init__.py,sha256=U81I6jh2hIPyuT4dtZjNcLi-CQ8yXIvtFn32tVK1YCY,92
4
- ostk/mathematics/libopen-space-toolkit-mathematics.so.3,sha256=sN4dodZXKAbszmbfsAlep5jz8FMcZ9gNtV1PZOMnW7g,2514064
4
+ ostk/mathematics/libopen-space-toolkit-mathematics.so.3,sha256=4oGXQCkwVtMaVb53_DKWOmIiVHF4hTd3uePNA_wc6gI,2548328
5
5
  ostk/mathematics/test/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
6
6
  ostk/mathematics/test/test_object.py,sha256=WtksTu9zz8_UNkQYKLO64nNBFDBkRWM_DXFuAWTdKUM,1027
7
7
  ostk/mathematics/test/curve_fitting/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
8
8
  ostk/mathematics/test/curve_fitting/interpolator/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
9
- ostk/mathematics/test/curve_fitting/interpolator/test_barycentric_rational.py,sha256=bp6lQ2jFmKkLc_UeVOx_muxy3zxG0u3G_nbRv1J3i0s,1110
10
- ostk/mathematics/test/curve_fitting/interpolator/test_cubic_spline.py,sha256=hLOsJxgcj9TOyBeAVYwENEMZ0NhEFFqMfaEfbF1GhcY,1371
9
+ ostk/mathematics/test/curve_fitting/interpolator/test_barycentric_rational.py,sha256=T2aqrwvb48GrIsNzH2tZpwM5Pc7HQfPx73yvxx-0A6o,1117
10
+ ostk/mathematics/test/curve_fitting/interpolator/test_cubic_spline.py,sha256=h2u0_0neNHKzgh4-i25VWSGZLJe6bzP2waZ-GRy8thc,1378
11
11
  ostk/mathematics/test/curve_fitting/interpolator/test_interpolator.py,sha256=46px5NKN8TJO9L9KbopsK9pixq0j3_Xu7PchDQTSEPQ,2093
12
- ostk/mathematics/test/curve_fitting/interpolator/test_linear.py,sha256=uyy7jRZ4uKGGMrlSHWUVHV_oeHwk11R9cSMhHsf_k3g,1105
12
+ ostk/mathematics/test/curve_fitting/interpolator/test_linear.py,sha256=9axYpdxqQksp5SNEDdDgq2NMLyBO_q0Y-HYhEbsb9wY,1111
13
13
  ostk/mathematics/test/geometry/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
14
14
  ostk/mathematics/test/geometry/test_angle.py,sha256=HOzlWUApgN6LN0g0Zts0cFQ6In_nmbYpFb3CnWWHVR0,10136
15
15
  ostk/mathematics/test/geometry/d2/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
@@ -33,7 +33,7 @@ ostk/mathematics/test/geometry/d3/object/__init__.py,sha256=epnVn2PwdQkUDZ1msqBR
33
33
  ostk/mathematics/test/geometry/d3/object/test_composite.py,sha256=03wi6k35a2lwyM29q5STjqX4CHL1IofYm2hBzERQlzU,7710
34
34
  ostk/mathematics/test/geometry/d3/object/test_cuboid.py,sha256=xJp6ImRnkNw_k6Tt8RaSXlsGnSqM-SlQSBfbm7SwJuA,470
35
35
  ostk/mathematics/test/geometry/d3/object/test_line.py,sha256=d-CvDjXeH1WQcleCU2yt4FdHLhWgy45NGzn3mEwy6xE,1690
36
- ostk/mathematics/test/geometry/d3/object/test_linestring.py,sha256=pocs-AGFbjfRAzfpYOfQ-vivRZ7KdGxS86m8MjHmPSQ,5916
36
+ ostk/mathematics/test/geometry/d3/object/test_linestring.py,sha256=L2gEJGDOaP17RgbLbX0-kBjskW_MrPLxVyf_l9yyxag,5938
37
37
  ostk/mathematics/test/geometry/d3/object/test_point.py,sha256=-5Cjy3Pru3UWbMO7vBDNiJYfUkqVVxxZtDgsMYYaosc,6611
38
38
  ostk/mathematics/test/geometry/d3/object/test_point_set.py,sha256=p5A1gM9UfB_-GgEavN-7Z8IgFc4qp1nAnHRYKTecvS0,3506
39
39
  ostk/mathematics/test/geometry/d3/object/test_polygon.py,sha256=7ZjucWMsNzppN3pptxHgGgOtOGv1grseT7VnctgOJP4,4262
@@ -41,15 +41,16 @@ ostk/mathematics/test/geometry/d3/object/test_segment.py,sha256=HWg-BCJoa74EgWlv
41
41
  ostk/mathematics/test/geometry/d3/objects/test_cuboid.py,sha256=uIDwPbkygXFIopKc2kayKYgadNfOKD_zxf3w2J4DfTY,471
42
42
  ostk/mathematics/test/geometry/d3/transformation/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
43
43
  ostk/mathematics/test/geometry/d3/transformation/rotation/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
44
- ostk/mathematics/test/geometry/d3/transformation/rotation/test_quaternion.py,sha256=9F5MwKJBoMpf83fMfPoyD1IBlFnHA-5nj7WdPMSZpF8,6635
45
- ostk/mathematics/test/geometry/d3/transformation/rotation/test_rotation_matrix.py,sha256=zRPoXe4V2SqX1hidAKbzCotHpoogONfvPLwKDs8IjaQ,360
46
- ostk/mathematics/test/geometry/d3/transformation/rotation/test_rotation_vector.py,sha256=XegkFtBL8GatR2nd1kV6uCXmXkSsbmTY2JuRHzDjt8o,987
44
+ ostk/mathematics/test/geometry/d3/transformation/rotation/test_euler_angle.py,sha256=eTIxAqUfCQj6eZfoQgNu-1xFg0O4sbKk4n8XHQwXD2E,4393
45
+ ostk/mathematics/test/geometry/d3/transformation/rotation/test_quaternion.py,sha256=CFau3zwBUWj-KELNdjhCd88teUh8U9f0wpNDDeObr60,6867
46
+ ostk/mathematics/test/geometry/d3/transformation/rotation/test_rotation_matrix.py,sha256=Vwk-yiyxOav3glx1m-xAfAp-DOpDwT6Yl9xpjmRKPvI,819
47
+ ostk/mathematics/test/geometry/d3/transformation/rotation/test_rotation_vector.py,sha256=ngzrvqH_0QRGwNsWc2RupUkpsTU5vZI-eoh5q2BkKRQ,1568
47
48
  ostk/mathematics/test/object/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
48
49
  ostk/mathematics/test/object/test_interval.py,sha256=yZT4eo5kM4iBE1GBoOxlESaUl5QL3xdsZwrG-6fA7ME,17941
49
50
  ostk/mathematics/test/object/test_vector.py,sha256=5MG3s8vhgoGKAIc5GzswlZObyIrJDIPNtsEd5wNORPU,76
50
- ostk/mathematics/test/solver/test_numerical_solver.py,sha256=fY7e6imxsj6PU_LXV9YcjNvddfegrqDjw9TmHUPA-kQ,5667
51
- open_space_toolkit_mathematics-3.0.2.dist-info/METADATA,sha256=3UsjJWhEjT2mUO5FdnTdhHLLX1r7R-4qho42-XMjPaM,1804
52
- open_space_toolkit_mathematics-3.0.2.dist-info/WHEEL,sha256=ruvibKQJj3kl3kp4sxHjhK-9MsN8ma-eErrd4EI-fqU,111
53
- open_space_toolkit_mathematics-3.0.2.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
54
- open_space_toolkit_mathematics-3.0.2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
55
- open_space_toolkit_mathematics-3.0.2.dist-info/RECORD,,
51
+ ostk/mathematics/test/solver/test_numerical_solver.py,sha256=YJo-z97w1tkRFJOAWjjvPywkBVCfCr9MJzuNi_cVIBg,5674
52
+ open_space_toolkit_mathematics-3.1.1.dist-info/METADATA,sha256=BqOpdYn2H_1EqG78gbEFtZzXgMP-LHhlT59m2OxX7Dw,1804
53
+ open_space_toolkit_mathematics-3.1.1.dist-info/WHEEL,sha256=ruvibKQJj3kl3kp4sxHjhK-9MsN8ma-eErrd4EI-fqU,111
54
+ open_space_toolkit_mathematics-3.1.1.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
55
+ open_space_toolkit_mathematics-3.1.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
56
+ open_space_toolkit_mathematics-3.1.1.dist-info/RECORD,,
@@ -14,7 +14,7 @@ def interpolator() -> BarycentricRational:
14
14
 
15
15
 
16
16
  class TestBarycentricRational:
17
- def test_constructors(self, interpolator: BarycentricRational):
17
+ def test_constructor_success(self, interpolator: BarycentricRational):
18
18
  assert interpolator is not None
19
19
  assert isinstance(interpolator, Interpolator)
20
20
  assert isinstance(interpolator, BarycentricRational)
@@ -16,7 +16,7 @@ def interpolator() -> CubicSpline:
16
16
 
17
17
 
18
18
  class TestCubicSpline:
19
- def test_constructors(self, interpolator: CubicSpline):
19
+ def test_constructor_success(self, interpolator: CubicSpline):
20
20
  assert interpolator is not None
21
21
  assert isinstance(interpolator, Interpolator)
22
22
  assert isinstance(interpolator, CubicSpline)
@@ -12,12 +12,11 @@ def interpolator() -> Linear:
12
12
 
13
13
 
14
14
  class TestLinear:
15
- def test_constructors(self, interpolator: Linear):
15
+ def test_constructor_success(self, interpolator: Linear):
16
16
  assert interpolator is not None
17
17
  assert isinstance(interpolator, Interpolator)
18
18
  assert isinstance(interpolator, Linear)
19
19
 
20
-
21
20
  def test_evaluate(self):
22
21
  interpolator = Linear(
23
22
  x=[0.0, 1.0, 2.0, 4.0, 5.0, 6.0], y=[0.0, 3.0, 6.0, 9.0, 17.0, 5.0]
@@ -41,7 +41,9 @@ class TestLineString:
41
41
  assert linestring.is_defined()
42
42
 
43
43
  # Construction with Array of Points using python numpy array
44
- linestring: LineString = LineString(np.array((point_1, point_2, point_3, point_4)))
44
+ linestring: LineString = LineString(
45
+ np.array((point_1, point_2, point_3, point_4))
46
+ )
45
47
 
46
48
  assert linestring is not None
47
49
  assert isinstance(linestring, LineString)
@@ -0,0 +1,138 @@
1
+ # Apache License 2.0
2
+
3
+ import pytest
4
+
5
+ import numpy as np
6
+
7
+ from ostk.mathematics.geometry import Angle
8
+ from ostk.mathematics.geometry.d3.transformation.rotation import Quaternion
9
+ from ostk.mathematics.geometry.d3.transformation.rotation import RotationVector
10
+ from ostk.mathematics.geometry.d3.transformation.rotation import RotationMatrix
11
+ from ostk.mathematics.geometry.d3.transformation.rotation import EulerAngle
12
+
13
+
14
+ @pytest.fixture
15
+ def euler_angle() -> EulerAngle:
16
+ return EulerAngle.unit()
17
+
18
+
19
+ class TestEulerAngle:
20
+ def test_constructor_success(self):
21
+ EulerAngle(
22
+ phi=Angle.zero(),
23
+ theta=Angle.zero(),
24
+ psi=Angle.zero(),
25
+ axis_sequence=EulerAngle.AxisSequence.ZYX,
26
+ )
27
+
28
+ EulerAngle(
29
+ vector=(0.0, 0.0, 0.0),
30
+ angle_unit=Angle.Unit.Degree,
31
+ axis_sequence=EulerAngle.AxisSequence.ZYX,
32
+ )
33
+
34
+ def test_operators_success(self, euler_angle: EulerAngle):
35
+ assert (euler_angle == euler_angle) is True
36
+ assert (euler_angle != euler_angle) is False
37
+
38
+ def test_str_success(self, euler_angle: EulerAngle):
39
+ assert str(euler_angle) is not None
40
+
41
+ def test_repr_success(self, euler_angle: EulerAngle):
42
+ assert repr(euler_angle) is not None
43
+
44
+ def test_is_defined_success(self, euler_angle: EulerAngle):
45
+ assert euler_angle.is_defined()
46
+
47
+ def test_is_unitary_success(self, euler_angle: EulerAngle):
48
+ assert euler_angle.is_unitary()
49
+
50
+ def test_is_near_success(self, euler_angle: EulerAngle):
51
+ assert euler_angle.is_near(
52
+ euler_angle=euler_angle,
53
+ angular_tolerance=Angle.zero(),
54
+ )
55
+
56
+ def test_properties_success(self, euler_angle: EulerAngle):
57
+ assert euler_angle.phi == Angle.degrees(0.0)
58
+ assert euler_angle.theta == Angle.degrees(0.0)
59
+ assert euler_angle.psi == Angle.degrees(0.0)
60
+ assert euler_angle.axis_sequence == EulerAngle.AxisSequence.ZYX
61
+
62
+ def test_to_vector_success(self, euler_angle: EulerAngle):
63
+ assert np.array_equal(
64
+ euler_angle.to_vector(angle_unit=Angle.Unit.Degree), np.array((0.0, 0.0, 0.0))
65
+ )
66
+
67
+ def test_to_string_success(self, euler_angle: EulerAngle):
68
+ assert euler_angle.to_string() == "[0, 0, 0] (ZYX)"
69
+ assert euler_angle.to_string(angle_unit=Angle.Unit.Degree) == "[0, 0, 0] (ZYX)"
70
+
71
+ def test_undefined_success(self):
72
+ assert not EulerAngle.undefined().is_defined()
73
+
74
+ def test_unit_success(self, euler_angle: EulerAngle):
75
+ assert EulerAngle.unit() == euler_angle
76
+
77
+ def test_xyz_success(self):
78
+ assert EulerAngle.xyz(
79
+ phi=Angle.zero(),
80
+ theta=Angle.zero(),
81
+ psi=Angle.zero(),
82
+ ) == EulerAngle(
83
+ phi=Angle.zero(),
84
+ theta=Angle.zero(),
85
+ psi=Angle.zero(),
86
+ axis_sequence=EulerAngle.AxisSequence.XYZ,
87
+ )
88
+
89
+ def test_zxy_success(self):
90
+ assert EulerAngle.zxy(
91
+ phi=Angle.zero(),
92
+ theta=Angle.zero(),
93
+ psi=Angle.zero(),
94
+ ) == EulerAngle(
95
+ phi=Angle.zero(),
96
+ theta=Angle.zero(),
97
+ psi=Angle.zero(),
98
+ axis_sequence=EulerAngle.AxisSequence.ZXY,
99
+ )
100
+
101
+ def test_zyx_success(self):
102
+ assert EulerAngle.zyx(
103
+ phi=Angle.zero(),
104
+ theta=Angle.zero(),
105
+ psi=Angle.zero(),
106
+ ) == EulerAngle(
107
+ phi=Angle.zero(),
108
+ theta=Angle.zero(),
109
+ psi=Angle.zero(),
110
+ axis_sequence=EulerAngle.AxisSequence.ZYX,
111
+ )
112
+
113
+ def test_quaternion_success(self):
114
+ assert (
115
+ EulerAngle.quaternion(
116
+ quaternion=Quaternion.unit(),
117
+ axis_sequence=EulerAngle.AxisSequence.ZYX,
118
+ )
119
+ == EulerAngle.unit()
120
+ )
121
+
122
+ def test_rotation_vector_success(self):
123
+ assert (
124
+ EulerAngle.rotation_vector(
125
+ rotation_vector=RotationVector.unit(),
126
+ axis_sequence=EulerAngle.AxisSequence.ZYX,
127
+ )
128
+ == EulerAngle.unit()
129
+ )
130
+
131
+ def test_rotation_matrix_success(self):
132
+ assert (
133
+ EulerAngle.rotation_matrix(
134
+ rotation_matrix=RotationMatrix.unit(),
135
+ axis_sequence=EulerAngle.AxisSequence.ZYX,
136
+ )
137
+ == EulerAngle.unit()
138
+ )
@@ -4,13 +4,11 @@ import pytest
4
4
 
5
5
  import numpy as np
6
6
 
7
- from ostk.mathematics import geometry
8
-
9
-
10
- Angle = geometry.Angle
11
- Quaternion = geometry.d3.transformation.rotation.Quaternion
12
- RotationVector = geometry.d3.transformation.rotation.RotationVector
13
- RotationMatrix = geometry.d3.transformation.rotation.RotationMatrix
7
+ from ostk.mathematics.geometry import Angle
8
+ from ostk.mathematics.geometry.d3.transformation.rotation import Quaternion
9
+ from ostk.mathematics.geometry.d3.transformation.rotation import RotationVector
10
+ from ostk.mathematics.geometry.d3.transformation.rotation import RotationMatrix
11
+ from ostk.mathematics.geometry.d3.transformation.rotation import EulerAngle
14
12
 
15
13
 
16
14
  @pytest.fixture
@@ -19,7 +17,7 @@ def quaternion() -> Quaternion:
19
17
 
20
18
 
21
19
  class TestQuaternion:
22
- def test_constructors_success(self, quaternion: Quaternion):
20
+ def test_constructor_success(self, quaternion: Quaternion):
23
21
  assert Quaternion(0.0, 0.0, 0.0, 1.0, Quaternion.Format.XYZS) == quaternion
24
22
  assert (
25
23
  Quaternion(np.array((0.0, 0.0, 0.0, 1.0)), Quaternion.Format.XYZS)
@@ -160,6 +158,9 @@ class TestQuaternion:
160
158
  def test_rotation_matrix_success(self, quaternion: Quaternion):
161
159
  assert Quaternion.rotation_matrix(RotationMatrix.rz(Angle.zero())) == quaternion
162
160
 
161
+ def test_euler_angle_success(self, quaternion: Quaternion):
162
+ assert Quaternion.euler_angle(EulerAngle.unit()) == quaternion
163
+
163
164
  def test_parse_success(self, quaternion: Quaternion):
164
165
  assert (
165
166
  Quaternion.parse("[0.0, 0.0, 0.0, 1.0]", Quaternion.Format.XYZS) == quaternion
@@ -1,24 +1,23 @@
1
1
  # Apache License 2.0
2
2
 
3
- from ostk.mathematics import geometry
4
-
5
-
6
- Angle = geometry.Angle
7
- Quaternion = geometry.d3.transformation.rotation.Quaternion
8
- RotationMatrix = geometry.d3.transformation.rotation.RotationMatrix
9
-
10
-
11
- # isDefined
12
- # getRowAt
13
- # getColumnAt
14
- # toTransposed
15
- # transpose
16
- # Undefined
17
- # Unit
18
- # RX
19
- # RY
20
- # RZ
21
- # Rows
22
- # Columns
23
- # Quaternion
24
- # RotationVector
3
+ import pytest
4
+
5
+ from ostk.mathematics.geometry.d3.transformation.rotation import Quaternion
6
+ from ostk.mathematics.geometry.d3.transformation.rotation import RotationMatrix
7
+ from ostk.mathematics.geometry.d3.transformation.rotation import EulerAngle
8
+
9
+
10
+ @pytest.fixture
11
+ def rotation_matrix() -> RotationMatrix:
12
+ return RotationMatrix.unit()
13
+
14
+
15
+ class TestRotationMatrix:
16
+ def test_is_defined_success(self, rotation_matrix: RotationMatrix):
17
+ assert rotation_matrix.is_defined() is True
18
+
19
+ def test_quaternion_success(self, rotation_matrix: RotationMatrix):
20
+ assert RotationMatrix.quaternion(Quaternion.unit()) == rotation_matrix
21
+
22
+ def test_euler_angle_success(self, rotation_matrix: RotationMatrix):
23
+ assert RotationMatrix.euler_angle(EulerAngle.unit()) == rotation_matrix
@@ -1,34 +1,47 @@
1
1
  # Apache License 2.0
2
2
 
3
- import numpy
3
+ import pytest
4
4
 
5
- from ostk.mathematics import geometry
5
+ import numpy as np
6
6
 
7
+ from ostk.mathematics.geometry import Angle
8
+ from ostk.mathematics.geometry.d3.transformation.rotation import Quaternion
9
+ from ostk.mathematics.geometry.d3.transformation.rotation import RotationVector
10
+ from ostk.mathematics.geometry.d3.transformation.rotation import EulerAngle
7
11
 
8
- Angle = geometry.Angle
9
- Quaternion = geometry.d3.transformation.rotation.Quaternion
10
- RotationVector = geometry.d3.transformation.rotation.RotationVector
11
12
 
13
+ @pytest.fixture
14
+ def rotation_vector() -> RotationVector:
15
+ return RotationVector.unit()
12
16
 
13
- def test_geometry_d3_transformation_rotation_rotation_vector():
14
- rv: RotationVector = RotationVector(
15
- numpy.array([[0.0], [0.0], [1.0]], dtype=float), Angle.zero()
16
- )
17
17
 
18
- assert (rv == rv) is True
19
- assert (rv != rv) is False
18
+ class TestRotationVector:
19
+ def test_constructor_success(self):
20
+ RotationVector(
21
+ axis=(0.0, 0.0, 1.0),
22
+ angle=Angle.zero(),
23
+ )
20
24
 
21
- assert rv.is_defined() is True
25
+ RotationVector(
26
+ vector=(0.0, 0.0, 1.0),
27
+ angle_unit=Angle.Unit.Degree,
28
+ )
22
29
 
23
- # assert numpy.array_equal(rv.get_axis(), numpy.array([[0.0], [0.0], [1.0]], dtype=float))
24
- assert rv.get_angle() == Angle.zero()
30
+ def test_operators_success(self, rotation_vector: RotationVector):
31
+ assert (rotation_vector == rotation_vector) is True
32
+ assert (rotation_vector != rotation_vector) is False
25
33
 
26
- assert RotationVector.undefined().is_defined() is False
27
- assert RotationVector.unit().is_defined() is True
28
- assert (
29
- RotationVector.quaternion(
30
- Quaternion(0.0, 0.0, 0.0, 1.0, Quaternion.Format.XYZS)
31
- ).is_defined()
32
- is True
33
- )
34
- # assert RotationVector.RotationMatrix().is_defined() is True
34
+ def test_get_angle_success(self, rotation_vector: RotationVector):
35
+ assert rotation_vector.get_angle() == Angle.zero()
36
+
37
+ def test_is_defined_success(self, rotation_vector: RotationVector):
38
+ assert rotation_vector.is_defined() is True
39
+
40
+ def test_is_defined_success(self, rotation_vector: RotationVector):
41
+ rotation_vector.rectify()
42
+
43
+ def test_quaternion_success(self, rotation_vector: RotationVector):
44
+ assert RotationVector.quaternion(Quaternion.unit()) == rotation_vector
45
+
46
+ def test_euler_angle_success(self, rotation_vector: RotationVector):
47
+ assert RotationVector.euler_angle(EulerAngle.unit()) == rotation_vector
@@ -59,7 +59,7 @@ def numerical_solver_conditional() -> NumericalSolver:
59
59
 
60
60
 
61
61
  class TestNumericalSolver:
62
- def test_constructors(self, numerical_solver: NumericalSolver):
62
+ def test_constructor_success(self, numerical_solver: NumericalSolver):
63
63
  assert numerical_solver is not None
64
64
  assert isinstance(numerical_solver, NumericalSolver)
65
65
  assert numerical_solver.is_defined()