Skip to content

Commit ac5421a

Browse files
markuswntrstephentyrone
authored andcommitted
Update angle/axis tests on quaternion
1 parent 44ccbd0 commit ac5421a

File tree

1 file changed

+51
-48
lines changed

1 file changed

+51
-48
lines changed

Tests/QuaternionTests/TransformationTests.swift

Lines changed: 51 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -62,53 +62,53 @@ final class TransformationTests: XCTestCase {
6262

6363
func testAngleAxisEdgeCases<T: Real & SIMDScalar>(_ type: T.Type) {
6464
// Zero/Zero
65-
XCTAssertTrue(Quaternion<T>(angle: .zero, axis: .zero).axis.isNaN)
66-
XCTAssertTrue(Quaternion<T>(angle: .zero, axis: .zero).angle.isNaN)
67-
XCTAssertEqual(Quaternion<T>(angle: .zero, axis: .zero), .zero)
65+
XCTAssertTrue(Quaternion<T>(length: .zero, angle: .zero, axis: .zero).axis.isNaN)
66+
XCTAssertTrue(Quaternion<T>(length: .zero, angle: .zero, axis: .zero).angle.isNaN)
67+
XCTAssertEqual(Quaternion<T>(length: .zero, angle: .zero, axis: .zero), .zero)
6868
// Inf/Zero
69-
XCTAssertTrue(Quaternion<T>(angle: .infinity, axis: .zero).axis.isNaN)
70-
XCTAssertTrue(Quaternion<T>(angle: .infinity, axis: .zero).angle.isNaN)
71-
XCTAssertEqual(Quaternion<T>(angle: .infinity, axis: .zero), .zero)
69+
XCTAssertTrue(Quaternion<T>(length: .zero, angle: .infinity, axis: .infinity).axis.isNaN)
70+
XCTAssertTrue(Quaternion<T>(length: .zero, angle: .infinity, axis: .infinity).angle.isNaN)
71+
XCTAssertEqual(Quaternion<T>(length: .zero, angle: .infinity, axis: .infinity), .zero)
7272
// -Inf/Zero
73-
XCTAssertTrue(Quaternion<T>(angle: -.infinity, axis: .zero).axis.isNaN)
74-
XCTAssertTrue(Quaternion<T>(angle: -.infinity, axis: .zero).angle.isNaN)
75-
XCTAssertEqual(Quaternion<T>(angle: -.infinity, axis: .zero), .zero)
73+
XCTAssertTrue(Quaternion<T>(length: .zero, angle: -.infinity, axis: -.infinity).axis.isNaN)
74+
XCTAssertTrue(Quaternion<T>(length: .zero, angle: -.infinity, axis: -.infinity).angle.isNaN)
75+
XCTAssertEqual(Quaternion<T>(length: .zero, angle: -.infinity, axis: -.infinity), .zero)
7676
// NaN/Zero
77-
XCTAssertTrue(Quaternion<T>(angle: .nan, axis: .zero).axis.isNaN)
78-
XCTAssertTrue(Quaternion<T>(angle: .nan, axis: .zero).angle.isNaN)
79-
XCTAssertEqual(Quaternion<T>(angle: .nan, axis: .zero), .zero)
77+
XCTAssertTrue(Quaternion<T>(length: .zero, angle: .nan, axis: .nan).axis.isNaN)
78+
XCTAssertTrue(Quaternion<T>(length: .zero, angle: .nan, axis: .nan).angle.isNaN)
79+
XCTAssertEqual(Quaternion<T>(length: .zero, angle: .nan, axis: .nan), .zero)
8080
// Zero/Inf
81-
XCTAssertTrue(Quaternion<T>(angle: .zero, axis: .infinity).axis.isNaN)
82-
XCTAssertTrue(Quaternion<T>(angle: .zero, axis: .infinity).angle.isNaN)
83-
XCTAssertEqual(Quaternion<T>(angle: .zero, axis: .infinity), .infinity)
81+
XCTAssertTrue(Quaternion<T>(length: .infinity, angle: .zero, axis: .zero).axis.isNaN)
82+
XCTAssertTrue(Quaternion<T>(length: .infinity, angle: .zero, axis: .zero).angle.isNaN)
83+
XCTAssertEqual(Quaternion<T>(length: .infinity, angle: .zero, axis: .zero), .infinity)
8484
// Inf/Inf
85-
XCTAssertTrue(Quaternion<T>(angle: .infinity, axis: .infinity).axis.isNaN)
86-
XCTAssertTrue(Quaternion<T>(angle: .infinity, axis: .infinity).angle.isNaN)
87-
XCTAssertEqual(Quaternion<T>(angle: .infinity, axis: .infinity), .infinity)
85+
XCTAssertTrue(Quaternion<T>(length: .infinity, angle: .infinity, axis: .infinity).axis.isNaN)
86+
XCTAssertTrue(Quaternion<T>(length: .infinity, angle: .infinity, axis: .infinity).angle.isNaN)
87+
XCTAssertEqual(Quaternion<T>(length: .infinity, angle: .infinity, axis: .infinity), .infinity)
8888
// -Inf/Inf
89-
XCTAssertTrue(Quaternion<T>(angle: -.infinity, axis: .infinity).axis.isNaN)
90-
XCTAssertTrue(Quaternion<T>(angle: -.infinity, axis: .infinity).angle.isNaN)
91-
XCTAssertEqual(Quaternion<T>(angle: -.infinity, axis: .infinity), .infinity)
89+
XCTAssertTrue(Quaternion<T>(length: .infinity, angle: -.infinity, axis: -.infinity).axis.isNaN)
90+
XCTAssertTrue(Quaternion<T>(length: .infinity, angle: -.infinity, axis: -.infinity).angle.isNaN)
91+
XCTAssertEqual(Quaternion<T>(length: .infinity, angle: -.infinity, axis: -.infinity), .infinity)
9292
// NaN/Inf
93-
XCTAssertTrue(Quaternion<T>(angle: .nan, axis: .infinity).axis.isNaN)
94-
XCTAssertTrue(Quaternion<T>(angle: .nan, axis: .infinity).angle.isNaN)
95-
XCTAssertEqual(Quaternion<T>(angle: .nan, axis: .infinity), .infinity)
93+
XCTAssertTrue(Quaternion<T>(length: .infinity, angle: .nan, axis: .nan).axis.isNaN)
94+
XCTAssertTrue(Quaternion<T>(length: .infinity, angle: .nan, axis: .nan).angle.isNaN)
95+
XCTAssertEqual(Quaternion<T>(length: .infinity, angle: .nan, axis: .nan), .infinity)
9696
// Zero/-Inf
97-
XCTAssertTrue(Quaternion<T>(angle: .zero, axis: -.infinity).axis.isNaN)
98-
XCTAssertTrue(Quaternion<T>(angle: .zero, axis: -.infinity).angle.isNaN)
99-
XCTAssertEqual(Quaternion<T>(angle: .zero, axis: -.infinity), .infinity)
97+
XCTAssertTrue(Quaternion<T>(length: -.infinity, angle: .zero, axis: .zero).axis.isNaN)
98+
XCTAssertTrue(Quaternion<T>(length: -.infinity, angle: .zero, axis: .zero).angle.isNaN)
99+
XCTAssertEqual(Quaternion<T>(length: -.infinity, angle: .zero, axis: .zero), .infinity)
100100
// Inf/-Inf
101-
XCTAssertTrue(Quaternion<T>(angle: .infinity, axis: -.infinity).axis.isNaN)
102-
XCTAssertTrue(Quaternion<T>(angle: .infinity, axis: -.infinity).angle.isNaN)
103-
XCTAssertEqual(Quaternion<T>(angle: .infinity, axis: -.infinity), .infinity)
101+
XCTAssertTrue(Quaternion<T>(length: -.infinity, angle: .infinity, axis: .infinity).axis.isNaN)
102+
XCTAssertTrue(Quaternion<T>(length: -.infinity, angle: .infinity, axis: .infinity).angle.isNaN)
103+
XCTAssertEqual(Quaternion<T>(length: -.infinity, angle: .infinity, axis: .infinity), .infinity)
104104
// -Inf/-Inf
105-
XCTAssertTrue(Quaternion<T>(angle: -.infinity, axis: -.infinity).axis.isNaN)
106-
XCTAssertTrue(Quaternion<T>(angle: -.infinity, axis: -.infinity).angle.isNaN)
107-
XCTAssertEqual(Quaternion<T>(angle: -.infinity, axis: -.infinity), .infinity)
105+
XCTAssertTrue(Quaternion<T>(length: -.infinity, angle: -.infinity, axis: -.infinity).axis.isNaN)
106+
XCTAssertTrue(Quaternion<T>(length: -.infinity, angle: -.infinity, axis: -.infinity).angle.isNaN)
107+
XCTAssertEqual(Quaternion<T>(length: -.infinity, angle: -.infinity, axis: -.infinity), .infinity)
108108
// NaN/-Inf
109-
XCTAssertTrue(Quaternion<T>(angle: .nan, axis: -.infinity).axis.isNaN)
110-
XCTAssertTrue(Quaternion<T>(angle: .nan, axis: -.infinity).angle.isNaN)
111-
XCTAssertEqual(Quaternion<T>(angle: .nan, axis: -.infinity), .infinity)
109+
XCTAssertTrue(Quaternion<T>(length: -.infinity, angle: .nan, axis: .nan).axis.isNaN)
110+
XCTAssertTrue(Quaternion<T>(length: -.infinity, angle: .nan, axis: .nan).angle.isNaN)
111+
XCTAssertEqual(Quaternion<T>(length: -.infinity, angle: .nan, axis: .nan), .infinity)
112112
}
113113

114114
func testAngleAxisEdgeCases() {
@@ -151,12 +151,12 @@ final class TransformationTests: XCTestCase {
151151
func testPolarDecomposition<T: Real & SIMDScalar>(_ type: T.Type) {
152152
let axis = SIMD3<T>(0,-1,0)
153153

154-
let q = Quaternion<T>(length: 5, halfAngle: .pi, axis: axis)
154+
let q = Quaternion<T>(length: 5, phase: .pi, axis: axis)
155155
XCTAssertEqual(q.axis, axis)
156156
XCTAssertEqual(q.angle, .pi * 2)
157157

158158
XCTAssertEqual(q.polar.length, 5)
159-
XCTAssertEqual(q.polar.halfAngle, .pi)
159+
XCTAssertEqual(q.polar.phase, .pi)
160160
XCTAssertEqual(q.polar.axis, axis)
161161
}
162162

@@ -166,15 +166,18 @@ final class TransformationTests: XCTestCase {
166166
}
167167

168168
func testPolarDecompositionEdgeCases<T: Real & SIMDScalar>(_ type: T.Type) {
169-
XCTAssertEqual(Quaternion<T>(length: .zero, halfAngle: .infinity, axis: .infinity), .zero)
170-
XCTAssertEqual(Quaternion<T>(length: .zero, halfAngle:-.infinity, axis: -.infinity), .zero)
171-
XCTAssertEqual(Quaternion<T>(length: .zero, halfAngle: .nan , axis: .nan ), .zero)
172-
XCTAssertEqual(Quaternion<T>(length: .infinity, halfAngle: .infinity, axis: .infinity), .infinity)
173-
XCTAssertEqual(Quaternion<T>(length: .infinity, halfAngle:-.infinity, axis: -.infinity), .infinity)
174-
XCTAssertEqual(Quaternion<T>(length: .infinity, halfAngle: .nan , axis: .infinity), .infinity)
175-
XCTAssertEqual(Quaternion<T>(length:-.infinity, halfAngle: .infinity, axis: .infinity), .infinity)
176-
XCTAssertEqual(Quaternion<T>(length:-.infinity, halfAngle:-.infinity, axis: -.infinity), .infinity)
177-
XCTAssertEqual(Quaternion<T>(length:-.infinity, halfAngle: .nan , axis: .infinity), .infinity)
169+
XCTAssertEqual(Quaternion<T>(length: .zero, phase: .zero , axis: .zero ), .zero)
170+
XCTAssertEqual(Quaternion<T>(length: .zero, phase: .infinity, axis: .infinity), .zero)
171+
XCTAssertEqual(Quaternion<T>(length: .zero, phase:-.infinity, axis: -.infinity), .zero)
172+
XCTAssertEqual(Quaternion<T>(length: .zero, phase: .nan , axis: .nan ), .zero)
173+
XCTAssertEqual(Quaternion<T>(length: .infinity, phase: .zero , axis: .zero ), .zero)
174+
XCTAssertEqual(Quaternion<T>(length: .infinity, phase: .infinity, axis: .infinity), .infinity)
175+
XCTAssertEqual(Quaternion<T>(length: .infinity, phase:-.infinity, axis: -.infinity), .infinity)
176+
XCTAssertEqual(Quaternion<T>(length: .infinity, phase: .nan , axis: .infinity), .infinity)
177+
XCTAssertEqual(Quaternion<T>(length:-.infinity, phase: .zero , axis: .zero ), .zero)
178+
XCTAssertEqual(Quaternion<T>(length:-.infinity, phase: .infinity, axis: .infinity), .infinity)
179+
XCTAssertEqual(Quaternion<T>(length:-.infinity, phase:-.infinity, axis: -.infinity), .infinity)
180+
XCTAssertEqual(Quaternion<T>(length:-.infinity, phase: .nan , axis: .infinity), .infinity)
178181
}
179182

180183
func testPolarDecompositionEdgeCases() {
@@ -273,7 +276,7 @@ final class TransformationTests: XCTestCase {
273276
// is rotate by a perpendicular axis with an angle that is a multiple of π
274277

275278
// An axis perpendicular to the vector, so all lanes are changing equally
276-
let axis = SIMD3<T>(1/2,0,-1/2)
279+
let axis = SIMD3<T>(1,0,-1) / .sqrt(2)
277280
// Create a value (somewhat) close to .greatestFiniteMagnitude
278281
let scalar = T(
279282
sign: .plus, exponent: T.greatestFiniteMagnitude.exponent,

0 commit comments

Comments
 (0)