88 lines
2.9 KiB
Swift
88 lines
2.9 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) }
|
|
}
|
|
|
|
#if !os(macOS)
|
|
@available(iOS 11, tvOS 11, *)
|
|
func testSystemSpacing() {
|
|
let x = B.topAnchor.systemSpacing(A.bottomAnchor, multiplier: 2) | .defaultLow
|
|
XCTAssertEqual(x.relation, NSLayoutConstraint.Relation.equal)
|
|
XCTAssertEqual(x.priority, ConstraintPriority.defaultLow)
|
|
XCTAssertEqual(x.constant, 16)
|
|
XCTAssertEqual(x.multiplier, 1)
|
|
}
|
|
#endif
|
|
}
|