68 lines
1.8 KiB
Kotlin
68 lines
1.8 KiB
Kotlin
|
|
package com.mindmachine.mvp
|
||
|
|
|
||
|
|
import com.mindmachine.mvp.domain.VisualPattern
|
||
|
|
import com.mindmachine.mvp.session.computeVisualAlpha
|
||
|
|
import org.junit.Assert.assertEquals
|
||
|
|
import org.junit.Assert.assertTrue
|
||
|
|
import org.junit.Test
|
||
|
|
|
||
|
|
class VisualSignalTest {
|
||
|
|
|
||
|
|
@Test
|
||
|
|
fun flashPatternAlternatesBetweenIntensityAndOff() {
|
||
|
|
val intensity = 70
|
||
|
|
val hz = 10f
|
||
|
|
|
||
|
|
val on = computeVisualAlpha(
|
||
|
|
visualPattern = VisualPattern.FLASH,
|
||
|
|
frameTimeNanos = 0L,
|
||
|
|
blinkFrequencyHz = hz,
|
||
|
|
intensityPercent = intensity
|
||
|
|
)
|
||
|
|
|
||
|
|
val off = computeVisualAlpha(
|
||
|
|
visualPattern = VisualPattern.FLASH,
|
||
|
|
frameTimeNanos = 75_000_000L,
|
||
|
|
blinkFrequencyHz = hz,
|
||
|
|
intensityPercent = intensity
|
||
|
|
)
|
||
|
|
|
||
|
|
assertEquals(0.7f, on, 0.0001f)
|
||
|
|
assertEquals(0f, off, 0.0001f)
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
fun pulsePatternStaysWithinZeroAndIntensity() {
|
||
|
|
val intensity = 60
|
||
|
|
|
||
|
|
val atStart = computeVisualAlpha(
|
||
|
|
visualPattern = VisualPattern.PULSE,
|
||
|
|
frameTimeNanos = 0L,
|
||
|
|
blinkFrequencyHz = 3f,
|
||
|
|
intensityPercent = intensity
|
||
|
|
)
|
||
|
|
val quarterCycle = computeVisualAlpha(
|
||
|
|
visualPattern = VisualPattern.PULSE,
|
||
|
|
frameTimeNanos = 83_333_333L,
|
||
|
|
blinkFrequencyHz = 3f,
|
||
|
|
intensityPercent = intensity
|
||
|
|
)
|
||
|
|
|
||
|
|
assertTrue(atStart in 0f..0.6f)
|
||
|
|
assertTrue(quarterCycle in 0f..0.6f)
|
||
|
|
assertTrue(quarterCycle > atStart)
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
fun intensityZeroAlwaysReturnsZero() {
|
||
|
|
val alpha = computeVisualAlpha(
|
||
|
|
visualPattern = VisualPattern.FLASH,
|
||
|
|
frameTimeNanos = 123_000_000L,
|
||
|
|
blinkFrequencyHz = 8f,
|
||
|
|
intensityPercent = 0
|
||
|
|
)
|
||
|
|
|
||
|
|
assertEquals(0f, alpha, 0f)
|
||
|
|
}
|
||
|
|
}
|