diff --git a/TZStackView.xcodeproj/project.pbxproj b/TZStackView.xcodeproj/project.pbxproj index b9e35a1..2eede14 100644 --- a/TZStackView.xcodeproj/project.pbxproj +++ b/TZStackView.xcodeproj/project.pbxproj @@ -13,13 +13,14 @@ 5F50E9F2F7E5B2DA68C946E0 /* ExplicitIntrinsicContentSizeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F50E5EB8202F5247F8517F3 /* ExplicitIntrinsicContentSizeView.swift */; }; 5F50EAD959E8ACC5929DBD75 /* NSLayoutConstraintExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB41AF691B294B8E003DB902 /* NSLayoutConstraintExtension.swift */; }; 5F50EF474D670FC33E8E80EA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5F50ED5A43FBFC32B9B9E1AA /* Images.xcassets */; }; + 7EF572D81BEE41100095237E /* Array+Product.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EF572D71BEE41100095237E /* Array+Product.swift */; }; A45441C21B9B6D71002452BA /* TZStackView.h in Headers */ = {isa = PBXBuildFile; fileRef = A45441C11B9B6D71002452BA /* TZStackView.h */; settings = {ATTRIBUTES = (Public, ); }; }; A45441C61B9B6D71002452BA /* TZStackView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A45441BF1B9B6D71002452BA /* TZStackView.framework */; }; A45441C71B9B6D71002452BA /* TZStackView.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A45441BF1B9B6D71002452BA /* TZStackView.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - A45441D01B9B6D9C002452BA /* TZSpacerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CC1B9B6D9C002452BA /* TZSpacerView.swift */; settings = {ASSET_TAGS = (); }; }; - A45441D11B9B6D9C002452BA /* TZStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CD1B9B6D9C002452BA /* TZStackView.swift */; settings = {ASSET_TAGS = (); }; }; - A45441D21B9B6D9C002452BA /* TZStackViewAlignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CE1B9B6D9C002452BA /* TZStackViewAlignment.swift */; settings = {ASSET_TAGS = (); }; }; - A45441D31B9B6D9C002452BA /* TZStackViewDistribution.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CF1B9B6D9C002452BA /* TZStackViewDistribution.swift */; settings = {ASSET_TAGS = (); }; }; + A45441D01B9B6D9C002452BA /* TZSpacerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CC1B9B6D9C002452BA /* TZSpacerView.swift */; }; + A45441D11B9B6D9C002452BA /* TZStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CD1B9B6D9C002452BA /* TZStackView.swift */; }; + A45441D21B9B6D9C002452BA /* TZStackViewAlignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CE1B9B6D9C002452BA /* TZStackViewAlignment.swift */; }; + A45441D31B9B6D9C002452BA /* TZStackViewDistribution.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45441CF1B9B6D9C002452BA /* TZStackViewDistribution.swift */; }; DB41AF6A1B294B8E003DB902 /* NSLayoutConstraintExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB41AF691B294B8E003DB902 /* NSLayoutConstraintExtension.swift */; }; DB5B70851B2A1963006043BD /* TestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5B70841B2A1963006043BD /* TestView.swift */; }; DB5B70871B2B8816006043BD /* TZStackViewTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5B70861B2B8816006043BD /* TZStackViewTestCase.swift */; }; @@ -67,6 +68,7 @@ 5F50EDEB0947F99E67140FC6 /* TZStackViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TZStackViewTests.swift; sourceTree = ""; }; 5F50EF54F01A3A6938C6CEA1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 5F50EFD0C46B7C7F989F10E1 /* TZStackViewTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TZStackViewTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 7EF572D71BEE41100095237E /* Array+Product.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Array+Product.swift"; sourceTree = ""; }; A45441BF1B9B6D71002452BA /* TZStackView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TZStackView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A45441C11B9B6D71002452BA /* TZStackView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TZStackView.h; sourceTree = ""; }; A45441C31B9B6D71002452BA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -130,6 +132,7 @@ 5F50EDEB0947F99E67140FC6 /* TZStackViewTests.swift */, DB5B70841B2A1963006043BD /* TestView.swift */, DB5B70861B2B8816006043BD /* TZStackViewTestCase.swift */, + 7EF572D71BEE41100095237E /* Array+Product.swift */, 5F50E05A91CC731E5AFD4E94 /* Supporting Files */, ); path = TZStackViewTests; @@ -325,6 +328,7 @@ 5F50E6EAC8DDE44079E03638 /* TZStackViewTests.swift in Sources */, DB5B70871B2B8816006043BD /* TZStackViewTestCase.swift in Sources */, DB5B70851B2A1963006043BD /* TestView.swift in Sources */, + 7EF572D81BEE41100095237E /* Array+Product.swift in Sources */, 5F50EAD959E8ACC5929DBD75 /* NSLayoutConstraintExtension.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/TZStackViewTests/Array+Product.swift b/TZStackViewTests/Array+Product.swift new file mode 100644 index 0000000..e219adb --- /dev/null +++ b/TZStackViewTests/Array+Product.swift @@ -0,0 +1,21 @@ +// +// Array+Product.swift +// TZStackView +// +// Created by Pan Yusheng on 11/7/15. +// Copyright © 2015 Tom van Zummeren. All rights reserved. +// + +import Foundation + +func * (left: Array, right: Array) -> Array<(E1, E2)> { + var result = [(E1, E2)]() + + for e1 in left { + for e2 in right { + result.append((e1, e2)) + } + } + + return result +} diff --git a/TZStackViewTests/TZStackViewTestCase.swift b/TZStackViewTests/TZStackViewTestCase.swift index e0a4c02..8fcf3f0 100644 --- a/TZStackViewTests/TZStackViewTestCase.swift +++ b/TZStackViewTests/TZStackViewTestCase.swift @@ -26,23 +26,36 @@ class TZStackViewTestCase: XCTestCase { override func setUp() { super.setUp() + recreateStackViews() + } + + override func tearDown() { + super.tearDown() + } + + func recreateStackViews() { + // clean old views otherwise some old spacer views and constraints are left + if uiStackView != nil { + uiStackView.removeFromSuperview() + } + + if tzStackView != nil { + tzStackView.removeFromSuperview() + } + // Create stack views with same views uiStackView = UIStackView(arrangedSubviews: createTestViews()) uiStackView.translatesAutoresizingMaskIntoConstraints = false tzStackView = TZStackView(arrangedSubviews: createTestViews()) tzStackView.translatesAutoresizingMaskIntoConstraints = false - + let window = UIApplication.sharedApplication().windows[0] window.addSubview(uiStackView) window.addSubview(tzStackView) - + configureStackViews(uiStackView, tzStackView) } - override func tearDown() { - super.tearDown() - } - func logAllConstraints() { print("================= UISTACKVIEW (\(uiStackView.constraints.count)) =================") print("subviews: \(uiStackView.subviews)") @@ -74,7 +87,9 @@ class TZStackViewTestCase: XCTestCase { func verifyConstraints(log log: Bool = false) { // Force constraints to be created + uiStackView.updateConstraintsIfNeeded() uiStackView.layoutIfNeeded() + tzStackView.updateConstraintsIfNeeded() tzStackView.layoutIfNeeded() if log { diff --git a/TZStackViewTests/TZStackViewTests.swift b/TZStackViewTests/TZStackViewTests.swift index 0d099c8..145d742 100644 --- a/TZStackViewTests/TZStackViewTests.swift +++ b/TZStackViewTests/TZStackViewTests.swift @@ -23,43 +23,72 @@ class TZStackViewTests: TZStackViewTestCase { // views[2].hidden = true // views[3].hidden = true // views[4].hidden = true + return views } // Be careful to configure the same thing on the UIStackView as on the TZStackView, otherwise the test is unfair override func configureStackViews(uiStackView: UIStackView, _ tzStackView: TZStackView) { - uiStackView.layoutMarginsRelativeArrangement = false - tzStackView.layoutMarginsRelativeArrangement = false - } - - func testFillHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Fill - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Fill - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - verifyConstraints() } - func testFillVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Fill - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Fill - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() + func testSameConstraints() { + let margins = [false] + let axes = [ + (UILayoutConstraintAxis.Horizontal, "Horizontal"), + (.Vertical, "Vertical") + ] + let distributions = [ + (UIStackViewDistribution.Fill, TZStackViewDistribution.Fill, "Fill"), + (.FillEqually, .FillEqually, "FillEqually"), + (.FillProportionally, .FillProportionally, "FillProportionally"), + (.EqualSpacing, .EqualSpacing, "EqualSpacing"), + (.EqualCentering, .EqualCentering, "EqualCentering") + ] + let alignments = [ + (UIStackViewAlignment.Fill, TZStackViewAlignment.Fill, "Fill"), + (.Leading, .Leading, "Leading"), + (UIStackViewAlignment.Top, TZStackViewAlignment.Top, "Top"), + (.FirstBaseline, .FirstBaseline, "FirstBaseline"), + (.Center, .Center, "Center"), + (.Trailing, .Trailing, "Trailing"), + (UIStackViewAlignment.Bottom, TZStackViewAlignment.Bottom, "Bottom"), + // TODO: LastBaseline + ] + let spacings = [CGFloat(10)] + + let cases = margins * axes * distributions * alignments * spacings + + for aCase in cases { + let (tuple4, spacing) = aCase + let (tuple3, aligment) = tuple4 + let (tuple2, distribution) = tuple3 + let (tuple1, axis) = tuple2 + let margin = tuple1 + + print("Test for layoutMarginsRelativeArrangement=\(margin), axis=\(axis.1), distribution=\(distribution.2), aligment=\(aligment.2), spacing=\(spacing)\n") + + recreateStackViews() + + uiStackView.layoutMarginsRelativeArrangement = margin + tzStackView.layoutMarginsRelativeArrangement = margin + + uiStackView.axis = axis.0 + tzStackView.axis = axis.0 + + uiStackView.distribution = distribution.0 + tzStackView.distribution = distribution.1 + + uiStackView.alignment = aligment.0 + tzStackView.alignment = aligment.1 + + uiStackView.spacing = spacing + tzStackView.spacing = spacing + + verifyConstraints() + } } - + func testFillHorizontalFill() { uiStackView.axis = .Horizontal uiStackView.distribution = .Fill @@ -67,945 +96,6 @@ class TZStackViewTests: TZStackViewTestCase { tzStackView.axis = .Horizontal tzStackView.distribution = .Fill tzStackView.alignment = .Fill - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFillVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Fill - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Fill - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFillHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Fill - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Fill - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFillVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Fill - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Fill - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFillHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Fill - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Fill - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFillVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Fill - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Fill - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFillHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Fill - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Fill - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFillVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Fill - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Fill - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testCenterHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Center - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Center - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testCenterVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Center - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Center - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testCenterHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Center - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Center - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testCenterVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Center - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Center - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testCenterHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Center - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Center - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testCenterVetricalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Center - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Center - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testCenterHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Center - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Center - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testCenterVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Center - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Center - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testCenterHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Center - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Center - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testCenterVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Center - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Center - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testLeadingHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Leading - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Leading - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testLeadingHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Leading - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Leading - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testLeadingHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Leading - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Leading - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testLeadingHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Leading - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Leading - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testLeadingHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Leading - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Leading - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testLeadingVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Leading - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Leading - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testLeadingVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Leading - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Leading - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testLeadingVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Leading - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Leading - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testLeadingVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Leading - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Leading - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testLeadingVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Leading - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Leading - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTopHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Top - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Top - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTopHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Top - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Top - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTopHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Top - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Top - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTopHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Top - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Top - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTopHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Top - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Top - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTopHVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Top - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Top - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTopVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Top - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Top - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTopVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Top - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Top - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTopVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Top - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Top - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTopVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Top - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Top - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTrailingHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Trailing - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Trailing - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTrailingHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Trailing - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Trailing - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTrailingHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Trailing - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Trailing - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTrailingHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Trailing - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Trailing - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTrailingHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Trailing - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Trailing - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTrailingVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Trailing - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Trailing - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTrailingVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Trailing - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Trailing - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTrailingVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Trailing - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Trailing - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTrailingVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Trailing - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Trailing - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testTrailingVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Trailing - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Trailing - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testBottomHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Bottom - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Bottom - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testBottomHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .Bottom - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .Bottom - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testBottomHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Bottom - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Bottom - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testBottomHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Bottom - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Bottom - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testBottomHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Bottom - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Bottom - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testBottomVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .Bottom - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .Bottom - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testBottomVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .Bottom - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .Bottom - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testBottomVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .Bottom - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .Bottom - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testBottomVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .Bottom - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .Bottom - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testBottomVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .Bottom - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .Bottom - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFirstBaselineHorizontalFillEqually() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillEqually - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillEqually - tzStackView.alignment = .FirstBaseline - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFirstBaselineHorizontalFill() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .Fill - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Horizontal - tzStackView.distribution = .Fill - tzStackView.alignment = .FirstBaseline - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFirstBaselineHorizontalFillProportionally() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Horizontal - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .FirstBaseline - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFirstBaselineHorizontalEqualSpacing() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .FirstBaseline - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFirstBaselineHorizontalEqualCentering() { - uiStackView.axis = .Horizontal - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Horizontal - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .FirstBaseline - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFirstBaselineVerticalFillEqually() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillEqually - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Vertical - tzStackView.distribution = .FillEqually - tzStackView.alignment = .FirstBaseline - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - logAllConstraints() - } - - func testFirstBaselineVerticalFill() { - uiStackView.axis = .Vertical - uiStackView.distribution = .Fill - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Vertical - tzStackView.distribution = .Fill - tzStackView.alignment = .FirstBaseline - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFirstBaselineVerticalFillProportionally() { - uiStackView.axis = .Vertical - uiStackView.distribution = .FillProportionally - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Vertical - tzStackView.distribution = .FillProportionally - tzStackView.alignment = .FirstBaseline - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFirstBaselineVerticalEqualSpacing() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualSpacing - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualSpacing - tzStackView.alignment = .FirstBaseline - - uiStackView.spacing = 10 - tzStackView.spacing = 10 - - verifyConstraints() - } - - func testFirstBaselineVerticalEqualCentering() { - uiStackView.axis = .Vertical - uiStackView.distribution = .EqualCentering - uiStackView.alignment = .FirstBaseline - tzStackView.axis = .Vertical - tzStackView.distribution = .EqualCentering - tzStackView.alignment = .FirstBaseline uiStackView.spacing = 10 tzStackView.spacing = 10