aboutsummaryrefslogtreecommitdiff
path: root/src/test/kotlin/util/math/ProjectionsBoxTest.kt
blob: 04720a30350614b77950c8976eaff09f8f0f1ab9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package moe.nea.firmament.test.util.math

import java.util.stream.Stream
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.DynamicTest
import org.junit.jupiter.api.TestFactory
import kotlin.streams.asStream
import net.minecraft.util.math.Vec2f
import moe.nea.firmament.util.math.Projections

class ProjectionsBoxTest {
	val Double.degrees get() = Math.toRadians(this)

	@TestFactory
	fun testProjections(): Stream<DynamicTest> {
		return sequenceOf(
			0.0.degrees to Vec2f(1F, 0F),
			63.4349.degrees to Vec2f(0.5F, 1F),
		).map { (angle, expected) ->
			DynamicTest.dynamicTest("ProjectionsBoxTest::projectAngleOntoUnitBox(${angle})") {
				val actual = Projections.Two.projectAngleOntoUnitBox(angle)
				fun msg() = "Expected (${expected.x}, ${expected.y}) got (${actual.x}, ${actual.y})"
				Assertions.assertEquals(expected.x, actual.x, 0.0001F, ::msg)
				Assertions.assertEquals(expected.y, actual.y, 0.0001F, ::msg)
			}
		}.asStream()
	}
}