Skip to content

Commit 1c2eaef

Browse files
authored
Merge pull request #173 from freshOS/testing
Testing
2 parents c065867 + f834109 commit 1c2eaef

17 files changed

+1334
-1381
lines changed

Package.resolved

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"originHash" : "0d1e08a917a619df6510ae568b5ab623f1fc22dffa644b8c590c04c4a5b086bc",
3+
"pins" : [
4+
{
5+
"identity" : "swift-numerics",
6+
"kind" : "remoteSourceControl",
7+
"location" : "https://github.com/apple/swift-numerics",
8+
"state" : {
9+
"revision" : "0a5bc04095a675662cf24757cc0640aa2204253b",
10+
"version" : "1.0.2"
11+
}
12+
}
13+
],
14+
"version" : 3
15+
}

Package.swift

+7-1
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,14 @@ let package = Package(
99
.tvOS(.v12)
1010
],
1111
products: [.library(name: "Stevia", targets: ["Stevia"])],
12+
dependencies: [
13+
.package(url: "https://github.com/apple/swift-numerics", from: "1.0.2"),
14+
],
1215
targets: [
1316
.target(name: "Stevia", path: "Sources", resources: [.copy("PrivacyInfo.xcprivacy")]),
14-
.testTarget(name: "SteviaTests", dependencies: ["Stevia"]),
17+
.testTarget(name: "SteviaTests", dependencies: [
18+
"Stevia",
19+
.product(name: "Numerics", package: "swift-numerics"),
20+
]),
1521
]
1622
)

Tests/LinuxMain.swift

-7
This file was deleted.

Tests/SteviaTests/BaselineTests.swift

+15-18
Original file line numberDiff line numberDiff line change
@@ -6,43 +6,40 @@
66
// Copyright © 2018 Sacha Durand Saint Omer. All rights reserved.
77
//
88

9-
import XCTest
9+
import UIKit
1010
import Stevia
11+
import Testing
1112

12-
@MainActor class BaselineTests: XCTestCase {
13+
@Suite
14+
@MainActor struct BaselineTests {
1315

14-
var win: UIWindow!
15-
var ctrler: UIViewController!
16-
var label1 = UILabel()
17-
var label2 = UILabel()
16+
let win = UIWindow(frame: UIScreen.main.bounds)
17+
let ctrler = UIViewController()
18+
let label1 = UILabel()
19+
let label2 = UILabel()
1820

19-
override func setUp() async throws {
20-
win = UIWindow(frame: UIScreen.main.bounds)
21-
ctrler = UIViewController()
21+
init() {
2222
win.rootViewController = ctrler
23-
label1 = UILabel()
24-
label2 = UILabel()
25-
2623
ctrler.view.subviews {
2724
label1
2825
label2
2926
}
3027
}
3128

32-
33-
34-
func testAlignLastBaselines() {
29+
@Test
30+
func alignLastBaselines() {
3531
label1.top(100)
3632
align(lastBaselines: label1, label2)
3733
ctrler.view.layoutIfNeeded()
38-
XCTAssertEqual(label1.forLastBaselineLayout.frame.minY, label2.forLastBaselineLayout.frame.minY)
34+
#expect(label1.forLastBaselineLayout.frame.minY == label2.forLastBaselineLayout.frame.minY)
3935
}
4036

41-
func testAlignFirstBaselines() {
37+
@Test
38+
func alignFirstBaselines() {
4239
label1.top(100)
4340
align(firstBaselines: label1, label2)
4441
ctrler.view.layoutIfNeeded()
45-
XCTAssertEqual(label1.forLastBaselineLayout.frame.minY, label2.forLastBaselineLayout.frame.minY)
42+
#expect(label1.forLastBaselineLayout.frame.minY == label2.forLastBaselineLayout.frame.minY)
4643
}
4744
}
4845

Tests/SteviaTests/CenterTests.swift

+80-92
Original file line numberDiff line numberDiff line change
@@ -6,149 +6,137 @@
66
// Copyright © 2016 Sacha Durand Saint Omer. All rights reserved.
77
//
88

9-
import XCTest
9+
import Testing
10+
import Numerics
11+
import UIKit
12+
import Stevia
1013

11-
let magicalIphoneXShift = 0.17
1214

13-
@MainActor class CenterTests: XCTestCase {
15+
@Suite
16+
@MainActor struct CenterTests {
1417

15-
var win: UIWindow!
16-
var ctrler: UIViewController!
17-
var v: UIView!
18+
let win = UIWindow(frame: UIScreen.main.bounds)
19+
var ctrler = UIViewController()
20+
var v = UIView()
1821

19-
override func setUp() async throws {
20-
// try await super.setUp()
21-
win = UIWindow(frame: UIScreen.main.bounds)
22-
ctrler = UIViewController()
22+
init() {
2323
win.rootViewController = ctrler
24-
v = UIView()
25-
ctrler.view.subviews { v! }
26-
27-
// verify view h as default values
28-
XCTAssertEqual(v.frame.origin.y, 0, accuracy: CGFloat(Float.ulpOfOne))
29-
XCTAssertEqual(v.frame.origin.x, 0, accuracy: CGFloat(Float.ulpOfOne))
30-
XCTAssertEqual(v.frame.width, 0, accuracy: CGFloat(Float.ulpOfOne))
31-
XCTAssertEqual(v.frame.height, 0, accuracy: CGFloat(Float.ulpOfOne))
32-
24+
ctrler.view.subviews { v }
3325
v.size(100)
3426
ctrler.view.layoutIfNeeded()
35-
XCTAssertEqual(v.frame.origin.y, 0, accuracy: CGFloat(Float.ulpOfOne))
36-
XCTAssertEqual(v.frame.origin.x, 0, accuracy: CGFloat(Float.ulpOfOne))
37-
XCTAssertEqual(v.frame.width, 100, accuracy: CGFloat(Float.ulpOfOne))
38-
XCTAssertEqual(v.frame.height, 100, accuracy: CGFloat(Float.ulpOfOne))
39-
}
40-
41-
override func tearDown() {
42-
super.tearDown()
4327
}
4428

45-
func testCenterHorizontally() {
29+
@Test
30+
func centerHorizontally() {
4631
v.centerHorizontally()
4732
ctrler.view.setNeedsLayout()
4833
ctrler.view.layoutIfNeeded()
49-
XCTAssertEqual(v.frame.origin.y, 0, accuracy: CGFloat(Float.ulpOfOne))
50-
XCTAssertEqual(v.frame.origin.x,
51-
ctrler.view.frame.width/2.0 - (v.frame.width/2.0),
52-
accuracy: CGFloat(magicalIphoneXShift))
53-
XCTAssertEqual(v.frame.width, 100, accuracy: CGFloat(Float.ulpOfOne))
54-
XCTAssertEqual(v.frame.height, 100, accuracy: CGFloat(Float.ulpOfOne))
34+
#expect(v.frame.origin.y == 0)
35+
#expect(isApproximatelyEqual(v.frame.origin.x, ctrler.view.frame.width/2.0 - (v.frame.width/2.0)))
36+
#expect(v.frame.width == 100)
37+
#expect(v.frame.height == 100)
5538
}
5639

57-
func testCenterHorizontallyWithOffsetDouble() {
40+
@Test
41+
func centerHorizontallyWithOffsetDouble() {
5842
v.centerHorizontally(offset: Double(50))
5943
ctrler.view.setNeedsLayout()
6044
ctrler.view.layoutIfNeeded()
61-
XCTAssertEqual(v.frame.origin.y, 0, accuracy: CGFloat(Float.ulpOfOne))
62-
XCTAssertEqual(v.frame.origin.x - 50,
63-
ctrler.view.frame.width/2.0 - (v.frame.width/2.0),
64-
accuracy: CGFloat(magicalIphoneXShift))
65-
XCTAssertEqual(v.frame.width, 100, accuracy: CGFloat(Float.ulpOfOne))
66-
XCTAssertEqual(v.frame.height, 100, accuracy: CGFloat(Float.ulpOfOne))
45+
#expect(v.frame.origin.y == 0)
46+
let val = v.frame.origin.x - 50
47+
#expect(isApproximatelyEqual(val, ctrler.view.frame.width/2.0 - (v.frame.width/2.0)))
48+
#expect(v.frame.width == 100)
49+
#expect(v.frame.height == 100)
6750
}
6851

69-
func testCenterHorizontallyWithOffsetCGFloat() {
52+
@Test
53+
func centerHorizontallyWithOffsetCGFloat() {
7054
v.centerHorizontally(offset: CGFloat(50))
7155
ctrler.view.setNeedsLayout()
7256
ctrler.view.layoutIfNeeded()
73-
XCTAssertEqual(v.frame.origin.y, 0, accuracy: CGFloat(Float.ulpOfOne))
74-
XCTAssertEqual(v.frame.origin.x - 50,
75-
ctrler.view.frame.width/2.0 - (v.frame.width/2.0),
76-
accuracy: CGFloat(magicalIphoneXShift))
77-
XCTAssertEqual(v.frame.width, 100, accuracy: CGFloat(Float.ulpOfOne))
78-
XCTAssertEqual(v.frame.height, 100, accuracy: CGFloat(Float.ulpOfOne))
57+
#expect(v.frame.origin.y == 0)
58+
let val = v.frame.origin.x - 50
59+
#expect(isApproximatelyEqual(val, (ctrler.view.frame.width/2.0 - (v.frame.width/2.0))))
60+
#expect(v.frame.width == 100)
61+
#expect(v.frame.height == 100)
7962
}
8063

81-
func testCenterHorizontallyWithOffsetInt() {
64+
@Test
65+
func centerHorizontallyWithOffsetInt() {
8266
v.centerHorizontally(offset: Int(50))
8367
ctrler.view.setNeedsLayout()
8468
ctrler.view.layoutIfNeeded()
85-
XCTAssertEqual(v.frame.origin.y, 0, accuracy: CGFloat(Float.ulpOfOne))
86-
XCTAssertEqual(v.frame.origin.x - 50,
87-
ctrler.view.frame.width/2.0 - (v.frame.width/2.0),
88-
accuracy: CGFloat(magicalIphoneXShift))
89-
XCTAssertEqual(v.frame.width, 100, accuracy: CGFloat(Float.ulpOfOne))
90-
XCTAssertEqual(v.frame.height, 100, accuracy: CGFloat(Float.ulpOfOne))
69+
#expect(v.frame.origin.y == 0)
70+
let val = v.frame.origin.x - 50
71+
#expect(isApproximatelyEqual(val, (ctrler.view.frame.width/2.0 - (v.frame.width/2.0))))
72+
#expect(v.frame.width == 100)
73+
#expect(v.frame.height == 100)
9174
}
9275

93-
func testCenterVertically() {
76+
@Test
77+
func centerVertically() {
9478
v.centerVertically()
9579
ctrler.view.setNeedsLayout()
9680
ctrler.view.layoutIfNeeded()
97-
XCTAssertEqual(v.frame.origin.y,
98-
ctrler.view.frame.height/2.0 - (v.frame.height/2.0),
99-
accuracy: CGFloat(Float.ulpOfOne))
100-
XCTAssertEqual(v.frame.origin.x, 0, accuracy: CGFloat(Float.ulpOfOne))
101-
XCTAssertEqual(v.frame.width, 100, accuracy: CGFloat(Float.ulpOfOne))
102-
XCTAssertEqual(v.frame.height, 100, accuracy: CGFloat(Float.ulpOfOne))
81+
#expect(v.frame.origin.y == ctrler.view.frame.height/2.0 - (v.frame.height/2.0))
82+
#expect(v.frame.origin.x == 0)
83+
#expect(v.frame.width == 100)
84+
#expect(v.frame.height == 100)
10385
}
10486

105-
func testCenterVerticallyWithOffsetDouble() {
87+
@Test
88+
func centerVerticallyWithOffsetDouble() {
10689
v.centerVertically(offset: Double(50))
10790
ctrler.view.setNeedsLayout()
10891
ctrler.view.layoutIfNeeded()
109-
XCTAssertEqual(v.frame.origin.y - 50,
110-
ctrler.view.frame.height/2.0 - (v.frame.height/2.0),
111-
accuracy: CGFloat(Float.ulpOfOne))
112-
XCTAssertEqual(v.frame.origin.x, 0, accuracy: CGFloat(Float.ulpOfOne))
113-
XCTAssertEqual(v.frame.width, 100, accuracy: CGFloat(Float.ulpOfOne))
114-
XCTAssertEqual(v.frame.height, 100, accuracy: CGFloat(Float.ulpOfOne))
92+
let val = v.frame.origin.y - 50
93+
#expect(isApproximatelyEqual(val, (ctrler.view.frame.height/2.0 - (v.frame.height/2.0))))
94+
#expect(v.frame.origin.x == 0)
95+
#expect(v.frame.width == 100)
96+
#expect(v.frame.height == 100)
11597
}
11698

117-
func testCenterVerticallyWithOffsetCGFloat() {
99+
@Test
100+
func centerVerticallyWithOffsetCGFloat() {
118101
v.centerVertically(offset: CGFloat(50))
119102
ctrler.view.setNeedsLayout()
120103
ctrler.view.layoutIfNeeded()
121-
XCTAssertEqual(v.frame.origin.y - 50,
122-
ctrler.view.frame.height/2.0 - (v.frame.height/2.0),
123-
accuracy: CGFloat(Float.ulpOfOne))
124-
XCTAssertEqual(v.frame.origin.x, 0, accuracy: CGFloat(Float.ulpOfOne))
125-
XCTAssertEqual(v.frame.width, 100, accuracy: CGFloat(Float.ulpOfOne))
126-
XCTAssertEqual(v.frame.height, 100, accuracy: CGFloat(Float.ulpOfOne))
104+
let val = v.frame.origin.y - 50
105+
#expect(isApproximatelyEqual(val, (ctrler.view.frame.height/2.0 - (v.frame.height/2.0))))
106+
#expect(v.frame.origin.x == 0)
107+
#expect(v.frame.width == 100)
108+
#expect(v.frame.height == 100)
127109
}
128110

129-
func testCenterVerticallyWithOffsetInt() {
111+
@Test
112+
func centerVerticallyWithOffsetInt() {
130113
v.centerVertically(offset: Int(50))
131114
ctrler.view.setNeedsLayout()
132115
ctrler.view.layoutIfNeeded()
133-
XCTAssertEqual(v.frame.origin.y - 50,
134-
ctrler.view.frame.height/2.0 - (v.frame.height/2.0),
135-
accuracy: CGFloat(Float.ulpOfOne))
136-
XCTAssertEqual(v.frame.origin.x, 0, accuracy: CGFloat(Float.ulpOfOne))
137-
XCTAssertEqual(v.frame.width, 100, accuracy: CGFloat(Float.ulpOfOne))
138-
XCTAssertEqual(v.frame.height, 100, accuracy: CGFloat(Float.ulpOfOne))
116+
117+
let val = v.frame.origin.y - 50
118+
#expect(isApproximatelyEqual(val, (ctrler.view.frame.height/2.0 - (v.frame.height/2.0))))
119+
#expect(v.frame.origin.x == 0)
120+
#expect(v.frame.width == 100)
121+
#expect(v.frame.height == 100)
139122
}
140123

141-
func testCenterInContainer() {
124+
@Test
125+
func centerInContainer() {
142126
v.centerInContainer()
143127
ctrler.view.setNeedsLayout()
144128
ctrler.view.layoutIfNeeded()
145-
XCTAssertEqual(v.frame.origin.y,
146-
ctrler.view.frame.height/2.0 - (v.frame.height/2.0),
147-
accuracy: CGFloat(Float.ulpOfOne))
148-
XCTAssertEqual(v.frame.origin.x,
149-
ctrler.view.frame.width/2.0 - (v.frame.width/2.0),
150-
accuracy: CGFloat(magicalIphoneXShift))
151-
XCTAssertEqual(v.frame.width, 100, accuracy: CGFloat(Float.ulpOfOne))
152-
XCTAssertEqual(v.frame.height, 100, accuracy: CGFloat(Float.ulpOfOne))
129+
130+
#expect(v.frame.origin.y == ctrler.view.frame.height/2.0 - (v.frame.height/2.0))
131+
#expect(isApproximatelyEqual(v.frame.origin.x, ctrler.view.frame.width/2.0 - (v.frame.width/2.0)))
132+
#expect(v.frame.width == 100)
133+
#expect(v.frame.height == 100)
134+
#expect(isApproximatelyEqual(v.frame.origin.y, ctrler.view.frame.height/2.0 - (v.frame.height/2.0)))
135+
#expect(isApproximatelyEqual(v.frame.origin.x, ctrler.view.frame.width/2.0 - (v.frame.width/2.0)))
136+
#expect(v.frame.height == 100)
153137
}
154138
}
139+
140+
func isApproximatelyEqual(_ a: Double, _ b: Double) -> Bool {
141+
return a.isApproximatelyEqual(to: b, absoluteTolerance: 0.5)
142+
}

0 commit comments

Comments
 (0)