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

95 lines
2.5 KiB
Kotlin
Raw Normal View History

2019-06-24 01:56:58 +00:00
package net.shadowfacts.cacao.view.button
2019-06-24 01:55:42 +00:00
import net.shadowfacts.cacao.CacaoScreen
2019-06-24 01:55:42 +00:00
import net.shadowfacts.cacao.Window
import net.shadowfacts.cacao.geometry.Point
import net.shadowfacts.cacao.geometry.Rect
import net.shadowfacts.cacao.util.MouseButton
2019-08-08 23:17:14 +00:00
import net.shadowfacts.cacao.view.View
import net.shadowfacts.cacao.viewcontroller.ViewController
import net.shadowfacts.kiwidsl.dsl
2019-06-24 01:55:42 +00:00
import org.junit.jupiter.api.Assertions.assertEquals
2019-06-24 02:21:59 +00:00
import org.junit.jupiter.api.Assertions.assertTrue
2019-06-24 01:55:42 +00:00
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
2019-06-24 02:21:59 +00:00
import java.util.concurrent.CompletableFuture
2019-06-24 01:55:42 +00:00
/**
* @author shadowfacts
*/
class EnumButtonTests {
companion object {
@BeforeAll
@JvmStatic
fun setupAll() {
System.setProperty("cacao.drawing.disabled", "true")
}
}
enum class MyEnum {
ONE, TWO, THREE
}
lateinit var screen: CacaoScreen
2019-06-24 01:55:42 +00:00
lateinit var window: Window
2019-08-08 23:17:14 +00:00
lateinit var viewController: ViewController
lateinit var button: EnumButton<MyEnum>
2019-06-24 01:55:42 +00:00
@BeforeEach
fun setup() {
screen = CacaoScreen()
2019-08-08 23:17:14 +00:00
viewController = object: ViewController() {
override fun loadView() {
view = View(Rect(0.0, 0.0, 1000.0, 1000.0))
}
}
window = screen.addWindow(Window(viewController))
button = viewController.view.addSubview(EnumButton(MyEnum.ONE, MyEnum::name))
window.solver.dsl {
button.leftAnchor equalTo 0
button.topAnchor equalTo 0
button.widthAnchor equalTo 25
button.heightAnchor equalTo 25
}
window.layout()
2019-06-24 01:55:42 +00:00
}
@Test
2019-06-24 02:21:59 +00:00
fun testHandlerCalled() {
val called = CompletableFuture<Boolean>()
button.handler = {
called.complete(true)
}
2019-06-24 01:55:42 +00:00
2019-06-24 02:34:12 +00:00
assertTrue(window.mouseClicked(Point(5.0, 5.0), MouseButton.LEFT))
2019-06-24 02:21:59 +00:00
assertTrue(called.getNow(false))
assertEquals(MyEnum.TWO, button.value)
}
@Test
fun testCyclesValues() {
2019-06-24 02:34:12 +00:00
assertTrue(window.mouseClicked(Point(5.0, 5.0), MouseButton.LEFT))
2019-06-24 02:21:59 +00:00
assertEquals(MyEnum.TWO, button.value)
2019-06-24 02:34:12 +00:00
assertTrue(window.mouseClicked(Point(5.0, 5.0), MouseButton.LEFT))
2019-06-24 02:21:59 +00:00
assertEquals(MyEnum.THREE, button.value)
2019-06-24 02:34:12 +00:00
assertTrue(window.mouseClicked(Point(5.0, 5.0), MouseButton.LEFT))
2019-06-24 02:21:59 +00:00
assertEquals(MyEnum.ONE, button.value)
2019-06-24 01:55:42 +00:00
}
@Test
fun testCyclesValuesBackwards() {
2019-06-24 02:34:12 +00:00
assertTrue(window.mouseClicked(Point(5.0, 5.0), MouseButton.LEFT))
2019-06-24 02:21:59 +00:00
assertEquals(MyEnum.TWO, button.value)
2019-06-24 02:34:12 +00:00
assertTrue(window.mouseClicked(Point(5.0, 5.0), MouseButton.RIGHT))
2019-06-24 02:21:59 +00:00
assertEquals(MyEnum.ONE, button.value)
2019-06-24 01:55:42 +00:00
}
@Test
fun testMiddleClickDoesNotChangeValue() {
2019-06-24 02:34:12 +00:00
assertTrue(window.mouseClicked(Point(5.0, 5.0), MouseButton.MIDDLE))
2019-06-24 02:21:59 +00:00
assertEquals(MyEnum.ONE, button.value)
2019-06-24 01:55:42 +00:00
}
}