package net.shadowfacts.cacao import net.shadowfacts.kiwidsl.dsl import net.shadowfacts.cacao.geometry.Size import net.shadowfacts.cacao.view.View import net.shadowfacts.cacao.viewcontroller.ViewController import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test /** * @author shadowfacts */ class WindowLayoutTests { lateinit var viewController: ViewController lateinit var window: Window val view: View get() = viewController.view @BeforeEach fun setup() { viewController = object: ViewController() { override fun loadView() { view = View() } } window = 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) } }