Files
MindMachine/app/src/test/java/com/mindmachine/mvp/VisualSignalTest.kt

68 lines
1.8 KiB
Kotlin
Raw Normal View History

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)
}
}