2019-06-23 15:41:32 +00:00
|
|
|
package net.shadowfacts.cacao.view
|
|
|
|
|
2019-06-27 23:29:29 +00:00
|
|
|
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 {
|
|
|
|
|
2019-06-27 23:29:29 +00:00
|
|
|
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() {
|
2019-06-27 23:29:29 +00:00
|
|
|
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))
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|