ASMR/src/test/kotlin/net/shadowfacts/cacao/view/EnumButtonTests.kt

95 lines
2.3 KiB
Kotlin

package net.shadowfacts.cacao.view
import net.shadowfacts.cacao.Window
import net.shadowfacts.cacao.geometry.Point
import net.shadowfacts.cacao.geometry.Rect
import net.shadowfacts.cacao.util.MouseButton
import net.shadowfacts.cacao.view.button.EnumButton
import net.shadowfacts.kiwidsl.dsl
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
/**
* @author shadowfacts
*/
class EnumButtonTests {
companion object {
@BeforeAll
@JvmStatic
fun setupAll() {
System.setProperty("cacao.drawing.disabled", "true")
}
}
enum class MyEnum {
ONE, TWO, THREE
}
lateinit var window: Window
@BeforeEach
fun setup() {
window = Window()
}
@Test
fun testCyclesValues() {
val values = mutableListOf<MyEnum>()
window.addView(EnumButton(MyEnum.ONE, MyEnum::name).apply {
frame = Rect(0.0, 0.0, 25.0, 25.0)
content.frame = Rect(0.0, 0.0, 25.0, 25.0)
handler = {
values.add(it.value)
}
})
window.mouseClicked(Point(5.0, 5.0), MouseButton.LEFT)
assertEquals(1, values.size)
assertEquals(MyEnum.TWO, values.last())
window.mouseClicked(Point(5.0, 5.0), MouseButton.LEFT)
assertEquals(2, values.size)
assertEquals(MyEnum.THREE, values.last())
window.mouseClicked(Point(5.0, 5.0), MouseButton.LEFT)
assertEquals(3, values.size)
assertEquals(MyEnum.ONE, values.last())
}
@Test
fun testCyclesValuesBackwards() {
val values = mutableListOf<MyEnum>()
window.addView(EnumButton(MyEnum.ONE, MyEnum::name).apply {
frame = Rect(0.0, 0.0, 25.0, 25.0)
content.frame = Rect(0.0, 0.0, 25.0, 25.0)
handler = {
values.add(it.value)
}
})
window.mouseClicked(Point(5.0, 5.0), MouseButton.LEFT)
assertEquals(1, values.size)
assertEquals(MyEnum.TWO, values.last())
window.mouseClicked(Point(5.0, 5.0), MouseButton.RIGHT)
assertEquals(2, values.size)
assertEquals(MyEnum.ONE, values.last())
}
@Test
fun testMiddleClickDoesNotChangeValue() {
val values = mutableListOf<MyEnum>()
window.addView(EnumButton(MyEnum.ONE, MyEnum::name).apply {
frame = Rect(0.0, 0.0, 25.0, 25.0)
content.frame = Rect(0.0, 0.0, 25.0, 25.0)
handler = {
values.add(it.value)
}
})
window.mouseClicked(Point(5.0, 5.0), MouseButton.MIDDLE)
assertEquals(1, values.size)
assertEquals(MyEnum.ONE, values.last())
}
}