2021-02-19 04:12:43 +00:00
|
|
|
package net.shadowfacts.cacao
|
|
|
|
|
|
|
|
import net.shadowfacts.cacao.geometry.Rect
|
|
|
|
import net.shadowfacts.kiwidsl.dsl
|
|
|
|
import net.shadowfacts.cacao.geometry.Size
|
|
|
|
import net.shadowfacts.cacao.view.View
|
|
|
|
import net.shadowfacts.cacao.viewcontroller.ViewController
|
2021-02-19 04:27:18 +00:00
|
|
|
import net.shadowfacts.cacao.window.Window
|
2021-02-19 04:12:43 +00:00
|
|
|
import org.junit.jupiter.api.Assertions.*
|
|
|
|
import org.junit.jupiter.api.BeforeEach
|
|
|
|
import org.junit.jupiter.api.Test
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author shadowfacts
|
|
|
|
*/
|
|
|
|
class WindowLayoutTests {
|
|
|
|
|
|
|
|
lateinit var screen: CacaoScreen
|
|
|
|
lateinit var viewController: ViewController
|
|
|
|
lateinit var window: Window
|
|
|
|
|
|
|
|
val view: View
|
|
|
|
get() = viewController.view
|
|
|
|
|
|
|
|
@BeforeEach
|
|
|
|
fun setup() {
|
|
|
|
screen = CacaoScreen()
|
|
|
|
viewController = object: ViewController() {
|
|
|
|
override fun loadView() {
|
|
|
|
view = View(Rect(0.0, 0.0, 1000.0, 1000.0))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
window = screen.addWindow(Window(viewController))
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testConstraintToConstant() {
|
|
|
|
val view = view.addSubview(View())
|
|
|
|
window.solver.dsl {
|
|
|
|
view.leftAnchor equalTo 100
|
|
|
|
view.rightAnchor equalTo 200
|
|
|
|
|
|
|
|
view.topAnchor equalTo 100
|
|
|
|
view.heightAnchor equalTo 200
|
|
|
|
}
|
|
|
|
window.layout()
|
|
|
|
|
|
|
|
assertEquals(100.0, view.widthAnchor.value)
|
|
|
|
assertEquals(300.0, view.bottomAnchor.value)
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testConstraintToView() {
|
|
|
|
val one = view.addSubview(View())
|
|
|
|
val two = view.addSubview(View())
|
|
|
|
window.solver.dsl {
|
|
|
|
one.leftAnchor equalTo 0
|
|
|
|
one.widthAnchor equalTo 100
|
|
|
|
|
|
|
|
one.topAnchor equalTo 0
|
|
|
|
one.heightAnchor equalTo 200
|
|
|
|
|
|
|
|
two.leftAnchor equalTo one.rightAnchor
|
|
|
|
two.rightAnchor equalTo 400
|
|
|
|
|
|
|
|
two.topAnchor equalTo one.bottomAnchor
|
|
|
|
two.heightAnchor equalTo one.heightAnchor
|
|
|
|
}
|
|
|
|
window.layout()
|
|
|
|
|
|
|
|
assertEquals(100.0, two.leftAnchor.value)
|
|
|
|
assertEquals(300.0, two.widthAnchor.value)
|
|
|
|
|
|
|
|
assertEquals(200.0, two.topAnchor.value)
|
|
|
|
assertEquals(400.0, two.bottomAnchor.value)
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testIntrinsicContentSize() {
|
|
|
|
val view = view.addSubview(View()).apply {
|
|
|
|
intrinsicContentSize = Size(100.0, 200.0)
|
|
|
|
}
|
|
|
|
window.solver.dsl {
|
|
|
|
view.leftAnchor equalTo 0
|
|
|
|
view.topAnchor equalTo 100
|
|
|
|
}
|
|
|
|
window.layout()
|
|
|
|
|
|
|
|
assertEquals(100.0, view.widthAnchor.value)
|
|
|
|
assertEquals(100.0, view.rightAnchor.value)
|
|
|
|
|
|
|
|
assertEquals(200.0, view.heightAnchor.value)
|
|
|
|
assertEquals(300.0, view.bottomAnchor.value)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|