Files
Textual-Auto-Layout/Tests/TextualAutoLayoutTests/TextualAutoLayoutTests.swift
2020-07-03 18:43:55 +02:00

77 lines
2.5 KiB
Swift

import XCTest
@testable import TextualAutoLayout
final class TextualAutoLayoutTests: XCTestCase {
var parent, A, B: ConstraintView!
override func setUp() {
parent = ConstraintView()
A = ConstraintView()
B = ConstraintView()
parent.addSubview(A)
parent.addSubview(B)
}
func testBasic() {
let x = A.bottomAnchor =&= B.topAnchor + 20.3 | .defaultLow
XCTAssertEqual(x.relation, NSLayoutConstraint.Relation.equal)
XCTAssertEqual(x.priority, ConstraintPriority.defaultLow)
XCTAssertEqual(x.constant, 20.3)
XCTAssertEqual(x.isActive, true)
}
func testDimensional() {
let x = A.heightAnchor =<= 2 * B.widthAnchor - 4
XCTAssertEqual(x.relation, NSLayoutConstraint.Relation.lessThanOrEqual)
XCTAssertEqual(x.priority, ConstraintPriority.required)
XCTAssertEqual(x.multiplier, 2)
XCTAssertEqual(x.constant, -4)
XCTAssertEqual(x.isActive, true)
XCTAssertEqual((A.widthAnchor =>= 2 * A.heightAnchor).constant, 0)
XCTAssertEqual((A.widthAnchor =<= 250).constant, 250)
}
func testIntrinsicContent() {
A.constrainHuggingCompression(.vertical, .required)
// newly set values
XCTAssertEqual(A.contentCompressionResistancePriority(for: .vertical), ConstraintPriority.required)
XCTAssertEqual(A.contentHuggingPriority(for: .vertical), ConstraintPriority.required)
// default values
XCTAssertEqual(A.contentCompressionResistancePriority(for: .horizontal), ConstraintPriority.defaultHigh)
XCTAssertEqual(A.contentHuggingPriority(for: .horizontal), ConstraintPriority.defaultLow)
}
func testReturnConstraint() {
XCTAssertEqual((A.rightAnchor =&= B.leftAnchor).firstItem as? ConstraintView, A)
}
func testViewMultiConstraint() {
A.anchor([.left, .right, .top], to: parent!, padding: 76) | .defaultHigh
let x = parent.constraints
XCTAssertEqual(x.count, 3)
XCTAssertEqual(A.translatesAutoresizingMaskIntoConstraints, false)
XCTAssertEqual(parent.translatesAutoresizingMaskIntoConstraints, true)
for u in x {
XCTAssertEqual(u.relation, NSLayoutConstraint.Relation.equal)
XCTAssertEqual(u.priority, ConstraintPriority.defaultHigh)
XCTAssertEqual(u.constant, 76)
XCTAssertEqual(u.firstAttribute, u.secondAttribute)
XCTAssertEqual(u.isActive, true)
let first = u.firstItem as? ConstraintView
let second = u.secondItem as? ConstraintView
if u.firstAttribute == .right {
XCTAssertEqual(first, parent)
XCTAssertEqual(second, A)
} else {
XCTAssertEqual(first, A)
XCTAssertEqual(second, parent)
}
}
x.setActive(false)
for u in x { XCTAssertEqual(u.isActive, false) }
}
}