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