diff --git a/Tests/AceLayoutTests/CommonTests.swift b/Tests/AceLayoutTests/CommonTests.swift deleted file mode 100644 index dd9e7de..0000000 --- a/Tests/AceLayoutTests/CommonTests.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// CommonTests.swift -// -// -// Created by Yusaku Nishi on 2021/12/16. -// - -import XCTest -import AceLayout - -final class CommonTests: XCTestCase { - - private var superview: AL.View! - private var subview: AL.View! - - override func setUp() { - super.setUp() - - superview = AL.View() - subview = AL.View() - superview.addSubview(subview) - } - - override func tearDown() { - super.tearDown() - - subview.removeFromSuperview() - subview = nil - superview = nil - } - - func testAutoLayout() { - XCTContext.runActivity(named: "translatesAutoresizingMaskIntoConstraintsがfalseになること") { _ in - XCTAssert(subview.translatesAutoresizingMaskIntoConstraints) - subview.autoLayout { item in - item.width.equal(to: 100) - } - XCTAssertFalse(subview.translatesAutoresizingMaskIntoConstraints) - } - XCTContext.runActivity(named: "引数activatesによるisActiveの制御") { _ in - XCTContext.runActivity(named: "デフォルトで全制約のisActiveがtrueになること") { _ in - let constraints = subview.autoLayout { item in - item.size.equal(toSquare: 100) - } - XCTAssert(constraints.allSatisfy { $0.isActive }) - } - XCTContext.runActivity(named: "activates: falseのとき全制約のisActiveがfalseになること") { _ in - let constraints = subview.autoLayout(activates: false) { item in - item.size.equal(toSquare: 100) - } - XCTAssert(constraints.allSatisfy { !$0.isActive }) - } - } - } - - func testPriority() { - let constraints = subview.autoLayout { item in - item.width.equal(to: 100) - item.height.equal(to: 100).priority(.defaultLow) - item.center.equal(to: superview).priority(.defaultHigh) - } - XCTAssertEqual(constraints.map { $0.priority }, - [.required, .defaultLow, .defaultHigh, .defaultHigh]) - } -} diff --git a/Tests/AceLayoutTests/LayoutConstraintsBuilderTests.swift b/Tests/AceLayoutTests/LayoutConstraintsBuilderTests.swift new file mode 100644 index 0000000..e3ff007 --- /dev/null +++ b/Tests/AceLayoutTests/LayoutConstraintsBuilderTests.swift @@ -0,0 +1,70 @@ +// +// LayoutConstraintsBuilderTests.swift +// +// +// Created by Yusaku Nishi on 2022/01/09. +// + +import XCTest +import AceLayout + +final class LayoutConstraintsBuilderTests: XCTestCase { + + private var view: AL.View! + private let conditionTrue = true + + override func setUp() { + super.setUp() + view = AL.View() + } + + override func tearDown() { + super.tearDown() + view = nil + } + + func testVoidExpression() { + func doNothing() {} + let constraints = view.autoLayout { item in + doNothing() + } + XCTAssert(constraints.isEmpty) + } + + func testIfStatement() { + let constraints = view.autoLayout { item in + if conditionTrue { + item.width.equal(to: 100) + } + if !conditionTrue { + item.height.equal(to: 50) + } + } + let expectedConstraints = [ + view.widthAnchor.constraint(equalToConstant: 100) + ] + NSLayoutConstraint.activate(expectedConstraints) + assertEqual(constraints, expectedConstraints) + } + + func testIfElseStatement() { + let constraints = view.autoLayout { item in + if conditionTrue { + item.width.equal(to: 100) + } else { + item.height.equal(to: 100) + } + if !conditionTrue { + item.width.equal(to: 50) + } else { + item.height.equal(to: 50) + } + } + let expectedConstraints = [ + view.widthAnchor.constraint(equalToConstant: 100), + view.heightAnchor.constraint(equalToConstant: 50) + ] + NSLayoutConstraint.activate(expectedConstraints) + assertEqual(constraints, expectedConstraints) + } +} diff --git a/Tests/AceLayoutTests/LayoutTargetTests.swift b/Tests/AceLayoutTests/LayoutTargetTests.swift new file mode 100644 index 0000000..fb02cec --- /dev/null +++ b/Tests/AceLayoutTests/LayoutTargetTests.swift @@ -0,0 +1,38 @@ +// +// LayoutTargetTests.swift +// +// +// Created by Yusaku Nishi on 2022/01/10. +// + +import XCTest +import AceLayout + +final class LayoutTargetTests: XCTestCase { + + func testAutoLayout() { + XCTContext.runActivity(named: "translatesAutoresizingMaskIntoConstraints should become false") { _ in + let view = AL.View() + XCTAssert(view.translatesAutoresizingMaskIntoConstraints) + view.autoLayout { item in + item.width.equal(to: 100) + } + XCTAssertFalse(view.translatesAutoresizingMaskIntoConstraints) + } + XCTContext.runActivity(named: "isActive control") { _ in + let view = AL.View() + XCTContext.runActivity(named: "All isActive should become true by default") { _ in + let constraints = view.autoLayout { item in + item.size.equal(toSquare: 100) + } + XCTAssert(constraints.allSatisfy { $0.isActive }) + } + XCTContext.runActivity(named: "All isActive should be false when activates: false") { _ in + let constraints = view.autoLayout(activates: false) { item in + item.size.equal(toSquare: 100) + } + XCTAssert(constraints.allSatisfy { !$0.isActive }) + } + } + } +} diff --git a/Tests/AceLayoutTests/EqualTests/UILayoutGuideEqualToUILayoutGuideConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/EqualTests/UILayoutGuideEqualToUILayoutGuideConstraintTests.swift similarity index 83% rename from Tests/AceLayoutTests/EqualTests/UILayoutGuideEqualToUILayoutGuideConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/EqualTests/UILayoutGuideEqualToUILayoutGuideConstraintTests.swift index ff5e222..a590aa9 100644 --- a/Tests/AceLayoutTests/EqualTests/UILayoutGuideEqualToUILayoutGuideConstraintTests.swift +++ b/Tests/AceLayoutTests/LayoutTests/EqualTests/UILayoutGuideEqualToUILayoutGuideConstraintTests.swift @@ -204,6 +204,45 @@ final class UILayoutGuideEqualToUILayoutGuideConstraintTests: XCTestCase { NSLayoutConstraint.activate(expectedConstraints) assertEqual(constraints, expectedConstraints) } + XCTContext.runActivity(named: "equal(to another:, insetBy:)") { _ in + XCTContext.runActivity(named: "insetBy insets: AL.EdgeInsets") { _ in + let layoutMarginsGuide = superview.layoutMarginsGuide + let insets = AL.EdgeInsets(top: 10, left: 20, bottom: 30, right: 40) + let constraints = layoutGuide.autoLayout { item in + item.edges.equal(to: layoutMarginsGuide, insetBy: insets) + } + let expectedConstraints = [ + layoutGuide.topAnchor.constraint(equalTo: layoutMarginsGuide.topAnchor, + constant: 10), + layoutGuide.leftAnchor.constraint(equalTo: layoutMarginsGuide.leftAnchor, + constant: 20), + layoutGuide.rightAnchor.constraint(equalTo: layoutMarginsGuide.rightAnchor, + constant: -40), + layoutGuide.bottomAnchor.constraint(equalTo: layoutMarginsGuide.bottomAnchor, + constant: -30) + ] + NSLayoutConstraint.activate(expectedConstraints) + assertEqual(constraints, expectedConstraints) + } + XCTContext.runActivity(named: "insetBy inset: CGFloat") { _ in + let layoutMarginsGuide = superview.layoutMarginsGuide + let constraints = layoutGuide.autoLayout { item in + item.edges.equal(to: layoutMarginsGuide, insetBy: 20) + } + let expectedConstraints = [ + layoutGuide.topAnchor.constraint(equalTo: layoutMarginsGuide.topAnchor, + constant: 20), + layoutGuide.leftAnchor.constraint(equalTo: layoutMarginsGuide.leftAnchor, + constant: 20), + layoutGuide.rightAnchor.constraint(equalTo: layoutMarginsGuide.rightAnchor, + constant: -20), + layoutGuide.bottomAnchor.constraint(equalTo: layoutMarginsGuide.bottomAnchor, + constant: -20) + ] + NSLayoutConstraint.activate(expectedConstraints) + assertEqual(constraints, expectedConstraints) + } + } XCTContext.runActivity(named: "insideOrEqual(to another:, insetBy:)") { _ in XCTContext.runActivity(named: "insetBy insets: AL.EdgeInsets") { _ in let layoutMarginsGuide = superview.layoutMarginsGuide diff --git a/Tests/AceLayoutTests/EqualTests/UILayoutGuideEqualToUIViewConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/EqualTests/UILayoutGuideEqualToUIViewConstraintTests.swift similarity index 92% rename from Tests/AceLayoutTests/EqualTests/UILayoutGuideEqualToUIViewConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/EqualTests/UILayoutGuideEqualToUIViewConstraintTests.swift index a73155a..7df0ac3 100644 --- a/Tests/AceLayoutTests/EqualTests/UILayoutGuideEqualToUIViewConstraintTests.swift +++ b/Tests/AceLayoutTests/LayoutTests/EqualTests/UILayoutGuideEqualToUIViewConstraintTests.swift @@ -285,6 +285,35 @@ final class UILayoutGuideEqualToUIViewConstraintTests: XCTestCase { NSLayoutConstraint.activate(expectedConstraints) assertEqual(constraints, expectedConstraints) } + XCTContext.runActivity(named: "equal(to another:, insetBy:)") { _ in + XCTContext.runActivity(named: "insetBy insets: AL.EdgeInsets") { _ in + let insets = AL.EdgeInsets(top: 10, left: 20, bottom: 30, right: 40) + let constraints = layoutGuide.autoLayout { item in + item.edges.equal(to: superview, insetBy: insets) + } + let expectedConstraints = [ + layoutGuide.topAnchor.constraint(equalTo: superview.topAnchor, constant: 10), + layoutGuide.leftAnchor.constraint(equalTo: superview.leftAnchor, constant: 20), + layoutGuide.rightAnchor.constraint(equalTo: superview.rightAnchor, constant: -40), + layoutGuide.bottomAnchor.constraint(equalTo: superview.bottomAnchor, constant: -30) + ] + NSLayoutConstraint.activate(expectedConstraints) + assertEqual(constraints, expectedConstraints) + } + XCTContext.runActivity(named: "insetBy inset: CGFloat") { _ in + let constraints = layoutGuide.autoLayout { item in + item.edges.equal(to: superview, insetBy: 20) + } + let expectedConstraints = [ + layoutGuide.topAnchor.constraint(equalTo: superview.topAnchor, constant: 20), + layoutGuide.leftAnchor.constraint(equalTo: superview.leftAnchor, constant: 20), + layoutGuide.rightAnchor.constraint(equalTo: superview.rightAnchor, constant: -20), + layoutGuide.bottomAnchor.constraint(equalTo: superview.bottomAnchor, constant: -20) + ] + NSLayoutConstraint.activate(expectedConstraints) + assertEqual(constraints, expectedConstraints) + } + } XCTContext.runActivity(named: "insideOrEqual(to another:, insetBy:)") { _ in XCTContext.runActivity(named: "insetBy insets: AL.EdgeInsets") { _ in let insets = AL.EdgeInsets(top: 10, left: 20, bottom: 30, right: 40) diff --git a/Tests/AceLayoutTests/EqualTests/UIViewEqualToUILayoutGuideConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/EqualTests/UIViewEqualToUILayoutGuideConstraintTests.swift similarity index 86% rename from Tests/AceLayoutTests/EqualTests/UIViewEqualToUILayoutGuideConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/EqualTests/UIViewEqualToUILayoutGuideConstraintTests.swift index 02d3c91..cf0a12a 100644 --- a/Tests/AceLayoutTests/EqualTests/UIViewEqualToUILayoutGuideConstraintTests.swift +++ b/Tests/AceLayoutTests/LayoutTests/EqualTests/UIViewEqualToUILayoutGuideConstraintTests.swift @@ -220,6 +220,37 @@ final class UIViewEqualToUILayoutGuideConstraintTests: XCTestCase { NSLayoutConstraint.activate(expectedConstraints) assertEqual(constraints, expectedConstraints) } + XCTContext.runActivity(named: "equal(to another:, insetBy:)") { _ in + XCTContext.runActivity(named: "insetBy insets: AL.EdgeInsets") { _ in + let layoutMarginsGuide = superview.layoutMarginsGuide + let insets = AL.EdgeInsets(top: 10, left: 20, bottom: 30, right: 40) + let constraints = subview.autoLayout { item in + item.edges.equal(to: layoutMarginsGuide, insetBy: insets) + } + let expectedConstraints = [ + subview.topAnchor.constraint(equalTo: layoutMarginsGuide.topAnchor, constant: 10), + subview.leftAnchor.constraint(equalTo: layoutMarginsGuide.leftAnchor, constant: 20), + subview.rightAnchor.constraint(equalTo: layoutMarginsGuide.rightAnchor, constant: -40), + subview.bottomAnchor.constraint(equalTo: layoutMarginsGuide.bottomAnchor, constant: -30) + ] + NSLayoutConstraint.activate(expectedConstraints) + assertEqual(constraints, expectedConstraints) + } + XCTContext.runActivity(named: "insetBy inset: CGFloat") { _ in + let layoutMarginsGuide = superview.layoutMarginsGuide + let constraints = subview.autoLayout { item in + item.edges.equal(to: layoutMarginsGuide, insetBy: 20) + } + let expectedConstraints = [ + subview.topAnchor.constraint(equalTo: layoutMarginsGuide.topAnchor, constant: 20), + subview.leftAnchor.constraint(equalTo: layoutMarginsGuide.leftAnchor, constant: 20), + subview.rightAnchor.constraint(equalTo: layoutMarginsGuide.rightAnchor, constant: -20), + subview.bottomAnchor.constraint(equalTo: layoutMarginsGuide.bottomAnchor, constant: -20) + ] + NSLayoutConstraint.activate(expectedConstraints) + assertEqual(constraints, expectedConstraints) + } + } XCTContext.runActivity(named: "insideOrEqual(to another:, insetBy:)") { _ in XCTContext.runActivity(named: "insetBy insets: AL.EdgeInsets") { _ in let layoutMarginsGuide = superview.layoutMarginsGuide diff --git a/Tests/AceLayoutTests/EqualTests/UIViewEqualToUIViewConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/EqualTests/UIViewEqualToUIViewConstraintTests.swift similarity index 92% rename from Tests/AceLayoutTests/EqualTests/UIViewEqualToUIViewConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/EqualTests/UIViewEqualToUIViewConstraintTests.swift index 7cf46ab..7afc0e1 100644 --- a/Tests/AceLayoutTests/EqualTests/UIViewEqualToUIViewConstraintTests.swift +++ b/Tests/AceLayoutTests/LayoutTests/EqualTests/UIViewEqualToUIViewConstraintTests.swift @@ -322,6 +322,35 @@ final class UIViewEqualToUIViewConstraintTests: XCTestCase { NSLayoutConstraint.activate(expectedConstraints) assertEqual(constraints, expectedConstraints) } + XCTContext.runActivity(named: "equal(to another:, insetBy:)") { _ in + XCTContext.runActivity(named: "insetBy insets: AL.EdgeInsets") { _ in + let insets = AL.EdgeInsets(top: 10, left: 20, bottom: 30, right: 40) + let constraints = subview.autoLayout { item in + item.edges.equal(to: superview, insetBy: insets) + } + let expectedConstraints = [ + subview.topAnchor.constraint(equalTo: superview.topAnchor, constant: 10), + subview.leftAnchor.constraint(equalTo: superview.leftAnchor, constant: 20), + subview.rightAnchor.constraint(equalTo: superview.rightAnchor, constant: -40), + subview.bottomAnchor.constraint(equalTo: superview.bottomAnchor, constant: -30) + ] + NSLayoutConstraint.activate(expectedConstraints) + assertEqual(constraints, expectedConstraints) + } + XCTContext.runActivity(named: "insetBy inset: CGFloat") { _ in + let constraints = subview.autoLayout { item in + item.edges.equal(to: superview, insetBy: 20) + } + let expectedConstraints = [ + subview.topAnchor.constraint(equalTo: superview.topAnchor, constant: 20), + subview.leftAnchor.constraint(equalTo: superview.leftAnchor, constant: 20), + subview.rightAnchor.constraint(equalTo: superview.rightAnchor, constant: -20), + subview.bottomAnchor.constraint(equalTo: superview.bottomAnchor, constant: -20) + ] + NSLayoutConstraint.activate(expectedConstraints) + assertEqual(constraints, expectedConstraints) + } + } XCTContext.runActivity(named: "insideOrEqual(to another:, insetBy:)") { _ in XCTContext.runActivity(named: "insetBy insets: AL.EdgeInsets") { _ in let insets = AL.EdgeInsets(top: 10, left: 20, bottom: 30, right: 40) diff --git a/Tests/AceLayoutTests/GreaterThanOrEqualTests/UILayoutGuideGreaterThanOrEqualToUILayoutGuideConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/GreaterThanOrEqualTests/UILayoutGuideGreaterThanOrEqualToUILayoutGuideConstraintTests.swift similarity index 100% rename from Tests/AceLayoutTests/GreaterThanOrEqualTests/UILayoutGuideGreaterThanOrEqualToUILayoutGuideConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/GreaterThanOrEqualTests/UILayoutGuideGreaterThanOrEqualToUILayoutGuideConstraintTests.swift diff --git a/Tests/AceLayoutTests/GreaterThanOrEqualTests/UILayoutGuideGreaterThanOrEqualToUIViewConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/GreaterThanOrEqualTests/UILayoutGuideGreaterThanOrEqualToUIViewConstraintTests.swift similarity index 100% rename from Tests/AceLayoutTests/GreaterThanOrEqualTests/UILayoutGuideGreaterThanOrEqualToUIViewConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/GreaterThanOrEqualTests/UILayoutGuideGreaterThanOrEqualToUIViewConstraintTests.swift diff --git a/Tests/AceLayoutTests/GreaterThanOrEqualTests/UIViewGreaterThanOrEqualToUILayoutGuideConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/GreaterThanOrEqualTests/UIViewGreaterThanOrEqualToUILayoutGuideConstraintTests.swift similarity index 100% rename from Tests/AceLayoutTests/GreaterThanOrEqualTests/UIViewGreaterThanOrEqualToUILayoutGuideConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/GreaterThanOrEqualTests/UIViewGreaterThanOrEqualToUILayoutGuideConstraintTests.swift diff --git a/Tests/AceLayoutTests/GreaterThanOrEqualTests/UIViewGreaterThanOrEqualToUIViewConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/GreaterThanOrEqualTests/UIViewGreaterThanOrEqualToUIViewConstraintTests.swift similarity index 100% rename from Tests/AceLayoutTests/GreaterThanOrEqualTests/UIViewGreaterThanOrEqualToUIViewConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/GreaterThanOrEqualTests/UIViewGreaterThanOrEqualToUIViewConstraintTests.swift diff --git a/Tests/AceLayoutTests/LessThanOrEqualTests/UILayoutGuideLessThanOrEqualToUILayoutGuideConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/LessThanOrEqualTests/UILayoutGuideLessThanOrEqualToUILayoutGuideConstraintTests.swift similarity index 100% rename from Tests/AceLayoutTests/LessThanOrEqualTests/UILayoutGuideLessThanOrEqualToUILayoutGuideConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/LessThanOrEqualTests/UILayoutGuideLessThanOrEqualToUILayoutGuideConstraintTests.swift diff --git a/Tests/AceLayoutTests/LessThanOrEqualTests/UILayoutGuideLessThanOrEqualToUIViewConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/LessThanOrEqualTests/UILayoutGuideLessThanOrEqualToUIViewConstraintTests.swift similarity index 100% rename from Tests/AceLayoutTests/LessThanOrEqualTests/UILayoutGuideLessThanOrEqualToUIViewConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/LessThanOrEqualTests/UILayoutGuideLessThanOrEqualToUIViewConstraintTests.swift diff --git a/Tests/AceLayoutTests/LessThanOrEqualTests/UIViewLessThanOrEqualToUILayoutGuideConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/LessThanOrEqualTests/UIViewLessThanOrEqualToUILayoutGuideConstraintTests.swift similarity index 100% rename from Tests/AceLayoutTests/LessThanOrEqualTests/UIViewLessThanOrEqualToUILayoutGuideConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/LessThanOrEqualTests/UIViewLessThanOrEqualToUILayoutGuideConstraintTests.swift diff --git a/Tests/AceLayoutTests/LessThanOrEqualTests/UIViewLessThanOrEqualToUIViewConstraintTests.swift b/Tests/AceLayoutTests/LayoutTests/LessThanOrEqualTests/UIViewLessThanOrEqualToUIViewConstraintTests.swift similarity index 100% rename from Tests/AceLayoutTests/LessThanOrEqualTests/UIViewLessThanOrEqualToUIViewConstraintTests.swift rename to Tests/AceLayoutTests/LayoutTests/LessThanOrEqualTests/UIViewLessThanOrEqualToUIViewConstraintTests.swift diff --git a/Tests/AceLayoutTests/NSLayoutConstraintExtensionTests.swift b/Tests/AceLayoutTests/NSLayoutConstraintExtensionTests.swift new file mode 100644 index 0000000..54ab9e3 --- /dev/null +++ b/Tests/AceLayoutTests/NSLayoutConstraintExtensionTests.swift @@ -0,0 +1,41 @@ +// +// NSLayoutConstraintExtensionTests.swift +// +// +// Created by Yusaku Nishi on 2021/12/16. +// + +import XCTest +import AceLayout + +final class NSLayoutConstraintExtensionTests: XCTestCase { + + private var superview: AL.View! + private var subview: AL.View! + + override func setUp() { + super.setUp() + + superview = AL.View() + subview = AL.View() + superview.addSubview(subview) + } + + override func tearDown() { + super.tearDown() + + subview.removeFromSuperview() + subview = nil + superview = nil + } + + func testPriority() { + let constraints = subview.autoLayout { item in + item.width.equal(to: 100) + item.height.equal(to: 100).priority(.defaultLow) + item.center.equal(to: superview).priority(.defaultHigh) + } + XCTAssertEqual(constraints.map { $0.priority }, + [.required, .defaultLow, .defaultHigh, .defaultHigh]) + } +}