Skip to content

Commit 45aeff5

Browse files
committed
Added missing tests for quaternions
1 parent 9adb861 commit 45aeff5

File tree

2 files changed

+204
-0
lines changed

2 files changed

+204
-0
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package io.github.scalamath.vecmatlib;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
public class TestQuatd {
7+
8+
private static void assertEqualsApprox(Quatd expected, Quatd actual) {
9+
Assert.assertEquals(expected.w(), actual.w(), 1e-6);
10+
Assert.assertEquals(expected.x(), actual.x(), 1e-6);
11+
Assert.assertEquals(expected.y(), actual.y(), 1e-6);
12+
Assert.assertEquals(expected.z(), actual.z(), 1e-6);
13+
}
14+
15+
@Test
16+
public void testSumWithFourValues() {
17+
var q = new Quatd(1.2, 1.4, -2.1, 3.0);
18+
var res = new Quatd(1.5, -0.1, -1.0, 3.0);
19+
assertEqualsApprox(res, q.plus(0.3, -1.5, 1.1, 0.0));
20+
}
21+
22+
@Test
23+
public void testSumOfTwoQuaternions() {
24+
var q1 = new Quatd(1.2, 1.4, -2.1, 3.0);
25+
var q2 = new Quatd(0.3, -1.5, 1.1, 0.0);
26+
var res = new Quatd(1.5, -0.1, -1.0, 3.0);
27+
assertEqualsApprox(res, q1.plus(q2));
28+
}
29+
30+
@Test
31+
public void testSubtractionWithFourValues() {
32+
var q = new Quatd(1.2, 1.4, -2.1, 3.0);
33+
var res = new Quatd(0.9, 2.9, -3.2, 3.0);
34+
assertEqualsApprox(res, q.minus(0.3, -1.5, 1.1, 0.0));
35+
}
36+
37+
@Test
38+
public void testSubtractionOfTwoQuaternions() {
39+
var q1 = new Quatd(1.2, 1.4, -2.1, 3.0);
40+
var q2 = new Quatd(0.3, -1.5, 1.1, 0.0);
41+
var res = new Quatd(0.9, 2.9, -3.2, 3.0);
42+
assertEqualsApprox(res, q1.minus(q2));
43+
}
44+
45+
@Test
46+
public void testNegated() {
47+
var q = new Quatd(1.2, 1.4, -2.1, 3.0);
48+
var p = new Quatd(-1.2, -1.4, 2.1, -3.0);
49+
Assert.assertEquals(p, q.negated());
50+
}
51+
52+
@Test
53+
public void testMultipliedByScalar() {
54+
var q = new Quatd(1.2, 1.4, -2.1, 3.0);
55+
var res = new Quatd(1.44, 1.68, -2.52, 3.6);
56+
assertEqualsApprox(res, q.multipliedBy(1.2));
57+
}
58+
59+
@Test
60+
public void testDividedByScalar() {
61+
var q = new Quatd(1.2, 1.4, -2.1, 3.0);
62+
var res = new Quatd(0.6, 0.7, -1.05, 1.5);
63+
assertEqualsApprox(res, q.dividedBy(2.0));
64+
}
65+
66+
@Test
67+
public void testMultiplyWithFourValues() {
68+
var q = new Quatd(1.2, 1.4, -2.1, 3.0);
69+
var res = new Quatd(4.77, -4.68, -3.81, -0.71);
70+
assertEqualsApprox(res, q.multiply(0.3, -1.5, 1.1, 0.0));
71+
}
72+
73+
@Test
74+
public void testMultiplyTwoQuaternions() {
75+
var q1 = new Quatd(1.2, 1.4, -2.1, 3.0);
76+
var q2 = new Quatd(0.3, -1.5, 1.1, 0.0);
77+
var res = new Quatd(4.77, -4.68, -3.81, -0.71);
78+
assertEqualsApprox(res, q1.multiply(q2));
79+
}
80+
81+
@Test
82+
public void testDivideTwoQuaternions() {
83+
var q1 = new Quatd(1.0, 1.0, 1.0, 1.0);
84+
var q2 = new Quatd(1.0, 0.0, 1.0, 0.0);
85+
var res = new Quatd(1.0, 1.0, 0.0, 0.0);
86+
assertEqualsApprox(res, q1.divide(q2));
87+
}
88+
89+
@Test
90+
public void testDivideWithFourValues() {
91+
var q = new Quatd(1.0, 1.0, 1.0, 1.0);
92+
var res = new Quatd(1.0, 1.0, 0.0, 0.0);
93+
assertEqualsApprox(res, q.divide(1.0, 0.0, 1.0, 0.0));
94+
}
95+
96+
@Test
97+
public void testEqualsApprox() {
98+
var q1 = new Quatd(1.20000001, 1.39999999, -2.09999999, 3.00000001);
99+
var q2 = new Quatd(1.2, 1.4, -2.1, 3.0);
100+
Assert.assertTrue(q1.equalsApprox(q2));
101+
}
102+
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package io.github.scalamath.vecmatlib;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
public class TestQuatf {
7+
8+
private static void assertEqualsApprox(Quatf expected, Quatf actual) {
9+
Assert.assertEquals(expected.w(), actual.w(), 1e-6f);
10+
Assert.assertEquals(expected.x(), actual.x(), 1e-6f);
11+
Assert.assertEquals(expected.y(), actual.y(), 1e-6f);
12+
Assert.assertEquals(expected.z(), actual.z(), 1e-6f);
13+
}
14+
15+
@Test
16+
public void testSumWithFourValues() {
17+
var q = new Quatf(1.2f, 1.4f, -2.1f, 3.0f);
18+
var res = new Quatf(1.5f, -0.1f, -1.0f, 3.0f);
19+
assertEqualsApprox(res, q.plus(0.3f, -1.5f, 1.1f, 0.0f));
20+
}
21+
22+
@Test
23+
public void testSumOfTwoQuaternions() {
24+
var q1 = new Quatf(1.2f, 1.4f, -2.1f, 3.0f);
25+
var q2 = new Quatf(0.3f, -1.5f, 1.1f, 0.0f);
26+
var res = new Quatf(1.5f, -0.1f, -1.0f, 3.0f);
27+
assertEqualsApprox(res, q1.plus(q2));
28+
}
29+
30+
@Test
31+
public void testSubtractionWithFourValues() {
32+
var q = new Quatf(1.2f, 1.4f, -2.1f, 3.0f);
33+
var res = new Quatf(0.9f, 2.9f, -3.2f, 3.0f);
34+
assertEqualsApprox(res, q.minus(0.3f, -1.5f, 1.1f, 0.0f));
35+
}
36+
37+
@Test
38+
public void testSubtractionOfTwoQuaternions() {
39+
var q1 = new Quatf(1.2f, 1.4f, -2.1f, 3.0f);
40+
var q2 = new Quatf(0.3f, -1.5f, 1.1f, 0.0f);
41+
var res = new Quatf(0.9f, 2.9f, -3.2f, 3.0f);
42+
assertEqualsApprox(res, q1.minus(q2));
43+
}
44+
45+
@Test
46+
public void testNegated() {
47+
var q = new Quatf(1.2f, 1.4f, -2.1f, 3.0f);
48+
var p = new Quatf(-1.2f, -1.4f, 2.1f, -3.0f);
49+
Assert.assertEquals(p, q.negated());
50+
}
51+
52+
@Test
53+
public void testMultipliedByScalar() {
54+
var q = new Quatf(1.2f, 1.4f, -2.1f, 3.0f);
55+
var res = new Quatf(1.44f, 1.68f, -2.52f, 3.6f);
56+
assertEqualsApprox(res, q.multipliedBy(1.2f));
57+
}
58+
59+
@Test
60+
public void testDividedByScalar() {
61+
var q = new Quatf(1.2f, 1.4f, -2.1f, 3.0f);
62+
var res = new Quatf(0.6f, 0.7f, -1.05f, 1.5f);
63+
assertEqualsApprox(res, q.dividedBy(2.0f));
64+
}
65+
66+
@Test
67+
public void testMultiplyWithFourValues() {
68+
var q = new Quatf(1.2f, 1.4f, -2.1f, 3.0f);
69+
var res = new Quatf(4.77f, -4.68f, -3.81f, -0.71f);
70+
assertEqualsApprox(res, q.multiply(0.3f, -1.5f, 1.1f, 0.0f));
71+
}
72+
73+
@Test
74+
public void testMultiplyTwoQuaternions() {
75+
var q1 = new Quatf(1.2f, 1.4f, -2.1f, 3.0f);
76+
var q2 = new Quatf(0.3f, -1.5f, 1.1f, 0.0f);
77+
var res = new Quatf(4.77f, -4.68f, -3.81f, -0.71f);
78+
assertEqualsApprox(res, q1.multiply(q2));
79+
}
80+
81+
@Test
82+
public void testDivideTwoQuaternions() {
83+
var q1 = new Quatf(1.0f, 1.0f, 1.0f, 1.0f);
84+
var q2 = new Quatf(1.0f, 0.0f, 1.0f, 0.0f);
85+
var res = new Quatf(1.0f, 1.0f, 0.0f, 0.0f);
86+
assertEqualsApprox(res, q1.divide(q2));
87+
}
88+
89+
@Test
90+
public void testDivideWithFourValues() {
91+
var q = new Quatf(1.0f, 1.0f, 1.0f, 1.0f);
92+
var res = new Quatf(1.0f, 1.0f, 0.0f, 0.0f);
93+
assertEqualsApprox(res, q.divide(1.0f, 0.0f, 1.0f, 0.0f));
94+
}
95+
96+
@Test
97+
public void testEqualsApprox() {
98+
var q1 = new Quatf(1.20000001f, 1.39999999f, -2.09999999f, 3.00000001f);
99+
var q2 = new Quatf(1.2f, 1.4f, -2.1f, 3.0f);
100+
Assert.assertTrue(q1.equalsApprox(q2));
101+
}
102+
}

0 commit comments

Comments
 (0)