65 lines
1.7 KiB
Kotlin
65 lines
1.7 KiB
Kotlin
package de.timklge.karooheadwind
|
|
|
|
import org.junit.Test
|
|
import org.junit.Assert.assertEquals
|
|
|
|
class DataStoreTest {
|
|
|
|
@Test
|
|
fun testLerpAngle_normalCase() {
|
|
// Normal case (no wrap-around)
|
|
val result = lerpAngle(90.0, 180.0, 0.5)
|
|
assertEquals(135.0, result, 0.001)
|
|
}
|
|
|
|
@Test
|
|
fun testLerpAngle_wrapAround0To360() {
|
|
// Wrap around 0/360 degrees
|
|
val result = lerpAngle(350.0, 10.0, 0.5)
|
|
assertEquals(0.0, result, 0.001)
|
|
}
|
|
|
|
@Test
|
|
fun testLerpAngle_wrapAround360To0() {
|
|
// Wrap around 0/360 degrees (reverse)
|
|
val result = lerpAngle(10.0, 350.0, 0.5)
|
|
assertEquals(0.0, result, 0.001)
|
|
}
|
|
|
|
@Test
|
|
fun testLerpAngle_largeAngleDifference() {
|
|
// Large angle difference (should take shorter path)
|
|
val result = lerpAngle(45.0, 315.0, 0.5)
|
|
assertEquals(0.0, result, 0.001)
|
|
}
|
|
|
|
@Test
|
|
fun testLerpAngle_exactly180DegreesApart() {
|
|
// Exactly 180 degrees apart
|
|
assertEquals(90.0, lerpAngle(0.0, 180.0, 0.5), 0.001)
|
|
assertEquals(90.0, lerpAngle(180.0, 0.0, 0.5), 0.001)
|
|
}
|
|
|
|
@Test
|
|
fun testLerpAngle_factorBoundaries() {
|
|
// Factor = 0 and 1
|
|
assertEquals(350.0, lerpAngle(350.0, 10.0, 0.0), 0.001)
|
|
assertEquals(0.0, lerpAngle(350.0, 10.0, 0.5), 0.001)
|
|
assertEquals(10.0, lerpAngle(350.0, 10.0, 1.0), 0.001)
|
|
}
|
|
|
|
@Test
|
|
fun testLerpAngle_negativeAngles() {
|
|
// Negative angles
|
|
val result = lerpAngle(-10.0, 10.0, 0.5)
|
|
assertEquals(0.0, result, 0.001)
|
|
}
|
|
|
|
@Test
|
|
fun testLerpAngle_anglesGreaterThan360() {
|
|
// Angles > 360
|
|
val result = lerpAngle(370.0, 380.0, 0.5)
|
|
assertEquals(15.0, result, 0.001)
|
|
}
|
|
}
|