1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.hipparchus.geometry.euclidean.threed;
24
25 import org.hipparchus.exception.MathIllegalStateException;
26 import org.hipparchus.geometry.LocalizedGeometryFormats;
27 import org.junit.jupiter.api.Test;
28
29 import java.lang.reflect.Field;
30
31 import static org.junit.jupiter.api.Assertions.assertEquals;
32
33
34 class RotationOrderTest {
35
36 @Test
37 void testName() {
38
39 RotationOrder[] orders = {
40 RotationOrder.XYZ, RotationOrder.XZY, RotationOrder.YXZ,
41 RotationOrder.YZX, RotationOrder.ZXY, RotationOrder.ZYX,
42 RotationOrder.XYX, RotationOrder.XZX, RotationOrder.YXY,
43 RotationOrder.YZY, RotationOrder.ZXZ, RotationOrder.ZYZ
44 };
45
46 for (int i = 0; i < orders.length; ++i) {
47 assertEquals(getFieldName(orders[i]), orders[i].toString());
48 }
49
50 }
51
52 @Test
53 void testIssue72() {
54 for (RotationOrder order : RotationOrder.values()) {
55 RotationOrder buildOrder = RotationOrder.getRotationOrder(order.toString());
56 assertEquals(0.0, Vector3D.distance1(order.getA1(), buildOrder.getA1()), Double.MIN_VALUE);
57 assertEquals(0.0, Vector3D.distance1(order.getA2(), buildOrder.getA2()), Double.MIN_VALUE);
58 assertEquals(0.0, Vector3D.distance1(order.getA3(), buildOrder.getA3()), Double.MIN_VALUE);
59 }
60 }
61
62 @Test
63 void testIssue72InvalidName() {
64 String wrongName = "BCE";
65 try {
66 RotationOrder.getRotationOrder(wrongName);
67 } catch (MathIllegalStateException mise) {
68 assertEquals(LocalizedGeometryFormats.INVALID_ROTATION_ORDER_NAME, mise.getSpecifier());
69 assertEquals(wrongName, mise.getParts()[0]);
70 }
71 }
72
73
74 private String getFieldName(RotationOrder order) {
75 try {
76 Field[] fields = RotationOrder.class.getFields();
77 for (int i = 0; i < fields.length; ++i) {
78 if (fields[i].get(null) == order) {
79 return fields[i].getName();
80 }
81 }
82 } catch (IllegalAccessException iae) {
83
84 }
85 return "unknown";
86 }
87
88 }