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

95 lines
2.6 KiB
Kotlin
Raw Normal View History

2019-06-23 15:41:32 +00:00
package net.shadowfacts.cacao.view
import net.shadowfacts.cacao.CacaoScreen
2019-06-23 15:41:32 +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.viewcontroller.ViewController
2019-06-23 15:41:32 +00:00
import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import java.util.concurrent.CompletableFuture
/**
* @author shadowfacts
*/
class ViewClickTests {
lateinit var screen: CacaoScreen
2019-06-23 15:41:32 +00:00
lateinit var window: Window
2019-08-08 23:17:14 +00:00
lateinit var viewController: ViewController
val view: View
get() = viewController.view
2019-06-23 15:41:32 +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))
2019-06-23 15:41:32 +00:00
}
@Test
fun testClickInsideRootView() {
val mouse = CompletableFuture<Point>()
2019-08-08 23:17:14 +00:00
view.addSubview(object: View(Rect(50.0, 50.0, 100.0, 100.0)) {
2019-06-24 02:34:12 +00:00
override fun mouseClicked(point: Point, mouseButton: MouseButton): Boolean {
2019-06-23 15:41:32 +00:00
mouse.complete(point)
2019-06-24 02:34:12 +00:00
return true
2019-06-23 15:41:32 +00:00
}
})
2019-06-24 02:34:12 +00:00
assertTrue(window.mouseClicked(Point(75.0, 75.0), MouseButton.LEFT))
2019-06-23 15:41:32 +00:00
assertEquals(Point(25.0, 25.0), mouse.getNow(null))
}
@Test
fun testClickOutsideRootView() {
val clicked = CompletableFuture<Boolean>()
2019-08-08 23:17:14 +00:00
view.addSubview(object: View(Rect(50.0, 50.0, 100.0, 100.0)) {
2019-06-24 02:34:12 +00:00
override fun mouseClicked(point: Point, mouseButton: MouseButton): Boolean {
2019-06-23 15:41:32 +00:00
clicked.complete(true)
2019-06-24 02:34:12 +00:00
return true
2019-06-23 15:41:32 +00:00
}
})
2019-06-24 02:34:12 +00:00
assertFalse(window.mouseClicked(Point(25.0, 25.0), MouseButton.LEFT))
2019-06-23 15:41:32 +00:00
assertFalse(clicked.getNow(false))
}
@Test
fun testClickInsideNestedView() {
val mouse = CompletableFuture<Point>()
2019-08-08 23:17:14 +00:00
val root = view.addSubview(View(Rect(50.0, 50.0, 100.0, 100.0)))
2019-06-23 20:53:25 +00:00
root.addSubview(object: View(Rect(25.0, 25.0, 50.0, 50.0)) {
2019-06-24 02:34:12 +00:00
override fun mouseClicked(point: Point, mouseButton: MouseButton): Boolean {
2019-06-23 15:41:32 +00:00
mouse.complete(point)
2019-06-24 02:34:12 +00:00
return true
2019-06-23 15:41:32 +00:00
}
})
2019-06-24 02:34:12 +00:00
assertTrue(window.mouseClicked(Point(100.0, 100.0), MouseButton.LEFT))
2019-06-23 15:41:32 +00:00
assertEquals(Point(25.0, 25.0), mouse.getNow(null))
}
@Test
fun testClickOutsideNestedView() {
val clicked = CompletableFuture<Boolean>()
2019-08-08 23:17:14 +00:00
val root = view.addSubview(View(Rect(50.0, 50.0, 100.0, 100.0)))
2019-06-23 20:53:25 +00:00
root.addSubview(object: View(Rect(25.0, 25.0, 50.0, 50.0)) {
2019-06-24 02:34:12 +00:00
override fun mouseClicked(point: Point, mouseButton: MouseButton): Boolean {
2019-06-23 15:41:32 +00:00
clicked.complete(true)
2019-06-24 02:34:12 +00:00
return true
2019-06-23 15:41:32 +00:00
}
})
2019-06-24 02:34:12 +00:00
assertFalse(window.mouseClicked(Point(0.0, 0.0), MouseButton.LEFT))
2019-06-23 15:41:32 +00:00
assertFalse(clicked.getNow(false))
}
}