Skip to content

Commit

Permalink
Move extension to NSLayoutXAxisAnchor.swift (#174)
Browse files Browse the repository at this point in the history
* Move extension to NSLayoutXAxisAnchor.swift

* Move tests
  • Loading branch information
tinder-garricnahapetian authored Oct 30, 2023
1 parent 4ee4721 commit de98e3c
Show file tree
Hide file tree
Showing 4 changed files with 134 additions and 104 deletions.
20 changes: 0 additions & 20 deletions Sources/Layout/LayoutAnchoring.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,26 +48,6 @@ extension UILayoutGuide: LayoutBoundary, LayoutCenter, LayoutSize {

// swiftlint:disable function_default_parameter_at_end

extension NSLayoutXAxisAnchor {

public func constraint(
is relation: NSLayoutConstraint.Relation = .equal,
to anchor: NSLayoutXAxisAnchor,
constant: CGFloat = 0
) -> NSLayoutConstraint {
switch relation {
case .equal:
return constraint(equalTo: anchor, constant: constant)
case .greaterThanOrEqual:
return constraint(greaterThanOrEqualTo: anchor, constant: constant)
case .lessThanOrEqual:
return constraint(lessThanOrEqualTo: anchor, constant: constant)
@unknown default:
return constraint(equalTo: anchor, constant: constant)
}
}
}

extension NSLayoutYAxisAnchor {

public func constraint(
Expand Down
34 changes: 34 additions & 0 deletions Sources/Layout/NSLayoutXAxisAnchor.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// All Contributions by Match Group
//
// Copyright © 2023 Tinder (Match Group, LLC)
//
// Licensed under the Match Group Modified 3-Clause BSD License.
// See https://github.com/Tinder/Layout/blob/main/LICENSE for license information.
//

import UIKit

extension NSLayoutXAxisAnchor {

// swiftlint:disable function_default_parameter_at_end

public func constraint(
is relation: NSLayoutConstraint.Relation = .equal,
to anchor: NSLayoutXAxisAnchor,
constant: CGFloat = 0
) -> NSLayoutConstraint {
switch relation {
case .equal:
return constraint(equalTo: anchor, constant: constant)
case .greaterThanOrEqual:
return constraint(greaterThanOrEqualTo: anchor, constant: constant)
case .lessThanOrEqual:
return constraint(lessThanOrEqualTo: anchor, constant: constant)
@unknown default:
return constraint(equalTo: anchor, constant: constant)
}
}

// swiftlint:enable function_default_parameter_at_end
}
84 changes: 0 additions & 84 deletions Tests/LayoutTests/LayoutAnchoringTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -142,90 +142,6 @@ final class LayoutAnchoringTests: XCTestCase {
expect(layoutSupport.height) == view.height
}

func testConstraintToXAnchor_withDefaults() {

// GIVEN

let viewA: UIView = .init()
let viewB: UIView = .init()
let expected: NSLayoutConstraint = viewA
.centerX
.constraint(equalTo: viewB.centerX)

// WHEN

let constraint: NSLayoutConstraint = viewA
.centerX
.constraint(to: viewB.centerX)

// THEN

expect(constraint).to(match(expected))
}

func testConstraintToXAnchor_withConstant() {

// GIVEN

let viewA: UIView = .init()
let viewB: UIView = .init()
let expected: NSLayoutConstraint = viewA
.centerX
.constraint(equalTo: viewB.centerX, constant: 50)

// WHEN

let constraint: NSLayoutConstraint = viewA
.centerX
.constraint(is: .equal, to: viewB.centerX, constant: 50)

// THEN

expect(constraint).to(match(expected))
}

func testConstraintToXAnchor_withGreaterThanOrEqualRelation() {

// GIVEN

let viewA: UIView = .init()
let viewB: UIView = .init()
let expected: NSLayoutConstraint = viewA
.centerX
.constraint(greaterThanOrEqualTo: viewB.centerX)

// WHEN

let constraint: NSLayoutConstraint = viewA
.centerX
.constraint(is: .greaterThanOrEqual, to: viewB.centerX)

// THEN

expect(constraint).to(match(expected))
}

func testConstraintToXAnchor_withLessThanOrEqualRelation() {

// GIVEN

let viewA: UIView = .init()
let viewB: UIView = .init()
let expected: NSLayoutConstraint = viewA
.centerX
.constraint(lessThanOrEqualTo: viewB.centerX)

// WHEN

let constraint: NSLayoutConstraint = viewA
.centerX
.constraint(is: .lessThanOrEqual, to: viewB.centerX)

// THEN

expect(constraint).to(match(expected))
}

func testConstraintToYAnchor_withDefaults() {

// GIVEN
Expand Down
100 changes: 100 additions & 0 deletions Tests/LayoutTests/NSLayoutXAxisAnchorTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
//
// All Contributions by Match Group
//
// Copyright © 2023 Tinder (Match Group, LLC)
//
// Licensed under the Match Group Modified 3-Clause BSD License.
// See https://github.com/Tinder/Layout/blob/main/LICENSE for license information.
//

@testable import Layout
import Nimble
import XCTest

@MainActor
final class NSLayoutXAxisAnchorTests: XCTestCase {

func testConstraintToXAnchor_withDefaults() {

// GIVEN

let viewA: UIView = .init()
let viewB: UIView = .init()
let expected: NSLayoutConstraint = viewA
.centerX
.constraint(equalTo: viewB.centerX)

// WHEN

let constraint: NSLayoutConstraint = viewA
.centerX
.constraint(to: viewB.centerX)

// THEN

expect(constraint).to(match(expected))
}

func testConstraintToXAnchor_withConstant() {

// GIVEN

let viewA: UIView = .init()
let viewB: UIView = .init()
let expected: NSLayoutConstraint = viewA
.centerX
.constraint(equalTo: viewB.centerX, constant: 50)

// WHEN

let constraint: NSLayoutConstraint = viewA
.centerX
.constraint(is: .equal, to: viewB.centerX, constant: 50)

// THEN

expect(constraint).to(match(expected))
}

func testConstraintToXAnchor_withGreaterThanOrEqualRelation() {

// GIVEN

let viewA: UIView = .init()
let viewB: UIView = .init()
let expected: NSLayoutConstraint = viewA
.centerX
.constraint(greaterThanOrEqualTo: viewB.centerX)

// WHEN

let constraint: NSLayoutConstraint = viewA
.centerX
.constraint(is: .greaterThanOrEqual, to: viewB.centerX)

// THEN

expect(constraint).to(match(expected))
}

func testConstraintToXAnchor_withLessThanOrEqualRelation() {

// GIVEN

let viewA: UIView = .init()
let viewB: UIView = .init()
let expected: NSLayoutConstraint = viewA
.centerX
.constraint(lessThanOrEqualTo: viewB.centerX)

// WHEN

let constraint: NSLayoutConstraint = viewA
.centerX
.constraint(is: .lessThanOrEqual, to: viewB.centerX)

// THEN

expect(constraint).to(match(expected))
}
}

0 comments on commit de98e3c

Please sign in to comment.