1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.geometry.euclidean.threed.rotation;
18
19 import org.junit.Assert;
20 import org.junit.Test;
21
22 public class AxisAngleSequenceTest {
23
24 @Test
25 public void testConstructor() {
26
27 final AxisAngleSequence seq = new AxisAngleSequence(AxisReferenceFrame.RELATIVE, AxisSequence.XYZ, 1, 2, 3);
28
29
30 Assert.assertEquals(AxisReferenceFrame.RELATIVE, seq.getReferenceFrame());
31 Assert.assertEquals(AxisSequence.XYZ, seq.getAxisSequence());
32 Assert.assertEquals(1, seq.getAngle1(), 0.0);
33 Assert.assertEquals(2, seq.getAngle2(), 0.0);
34 Assert.assertEquals(3, seq.getAngle3(), 0.0);
35 }
36
37 @Test
38 public void testGetAngles() {
39
40 final AxisAngleSequence seq = new AxisAngleSequence(AxisReferenceFrame.RELATIVE, AxisSequence.XYZ, 1, 2, 3);
41
42
43 final double[] angles = seq.getAngles();
44
45
46 Assert.assertArrayEquals(new double[] {1, 2, 3}, angles, 0.0);
47 }
48
49 @Test
50 public void testHashCode() {
51
52 final AxisAngleSequence seq = new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 2, 3);
53
54
55 Assert.assertNotEquals(seq.hashCode(), new AxisAngleSequence(AxisReferenceFrame.RELATIVE, AxisSequence.XYZ, 1, 2, 3).hashCode());
56 Assert.assertNotEquals(seq.hashCode(), new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.ZYX, 1, 2, 3).hashCode());
57 Assert.assertNotEquals(seq.hashCode(), new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 9, 2, 3).hashCode());
58 Assert.assertNotEquals(seq.hashCode(), new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 9, 3).hashCode());
59 Assert.assertNotEquals(seq.hashCode(), new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 2, 9).hashCode());
60
61 Assert.assertEquals(seq.hashCode(), new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 2, 3).hashCode());
62 }
63
64 @Test
65 public void testEquals() {
66
67 final AxisAngleSequence seq = new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 2, 3);
68
69
70 Assert.assertFalse(seq.equals(null));
71 Assert.assertNotEquals(seq, new Object());
72
73 Assert.assertNotEquals(seq, new AxisAngleSequence(AxisReferenceFrame.RELATIVE, AxisSequence.XYZ, 1, 2, 3));
74 Assert.assertNotEquals(seq, new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.ZYX, 1, 2, 3));
75 Assert.assertNotEquals(seq, new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 9, 2, 3));
76 Assert.assertNotEquals(seq, new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 9, 3));
77 Assert.assertNotEquals(seq, new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 2, 9));
78
79 Assert.assertEquals(seq, seq);
80 Assert.assertEquals(seq, new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 2, 3));
81 }
82
83 @Test
84 public void testEqualsAndHashCode_signedZeroConsistency() {
85
86 final AxisAngleSequence a = new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ,
87 0.0, -0.0, 0.0);
88 final AxisAngleSequence b = new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ,
89 -0.0, 0.0, -0.0);
90 final AxisAngleSequence c = new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ,
91 0.0, -0.0, 0.0);
92 final AxisAngleSequence d = new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ,
93 -0.0, 0.0, -0.0);
94
95
96 Assert.assertFalse(a.equals(b));
97 Assert.assertNotEquals(a.hashCode(), b.hashCode());
98
99 Assert.assertTrue(a.equals(c));
100 Assert.assertEquals(a.hashCode(), c.hashCode());
101
102 Assert.assertTrue(b.equals(d));
103 Assert.assertEquals(b.hashCode(), d.hashCode());
104 }
105
106 @Test
107 public void testToString() {
108
109 final AxisAngleSequence seq = new AxisAngleSequence(AxisReferenceFrame.ABSOLUTE, AxisSequence.XYZ, 1, 2, 3);
110
111
112 final String str = seq.toString();
113
114
115 Assert.assertTrue(str.contains("ABSOLUTE"));
116 Assert.assertTrue(str.contains("XYZ"));
117 Assert.assertTrue(str.contains("1"));
118 Assert.assertTrue(str.contains("2"));
119 Assert.assertTrue(str.contains("3"));
120 }
121
122 @Test
123 public void testCreateRelative() {
124
125 final AxisAngleSequence seq = AxisAngleSequence.createRelative(AxisSequence.XYZ, 1, 2, 3);
126
127
128 Assert.assertEquals(AxisReferenceFrame.RELATIVE, seq.getReferenceFrame());
129 Assert.assertEquals(AxisSequence.XYZ, seq.getAxisSequence());
130 Assert.assertEquals(1, seq.getAngle1(), 0.0);
131 Assert.assertEquals(2, seq.getAngle2(), 0.0);
132 Assert.assertEquals(3, seq.getAngle3(), 0.0);
133 }
134
135 @Test
136 public void testCreateAbsolute() {
137
138 final AxisAngleSequence seq = AxisAngleSequence.createAbsolute(AxisSequence.XYZ, 1, 2, 3);
139
140
141 Assert.assertEquals(AxisReferenceFrame.ABSOLUTE, seq.getReferenceFrame());
142 Assert.assertEquals(AxisSequence.XYZ, seq.getAxisSequence());
143 Assert.assertEquals(1, seq.getAngle1(), 0.0);
144 Assert.assertEquals(2, seq.getAngle2(), 0.0);
145 Assert.assertEquals(3, seq.getAngle3(), 0.0);
146 }
147 }