Skip to content

Commit 3cb480a

Browse files
committed
CGRect special values implemented
1 parent d42d739 commit 3cb480a

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

Foundation/NSGeometry.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,18 @@ extension CGRect {
227227
}
228228
}
229229

230+
extension CGRect {
231+
public static let null = CGRect(x: CGFloat.infinity,
232+
y: CGFloat.infinity,
233+
width: CGFloat(0),
234+
height: CGFloat(0))
235+
236+
public static let infinite = CGRect(x: -CGFloat.greatestFiniteMagnitude / 2,
237+
y: -CGFloat.greatestFiniteMagnitude / 2,
238+
width: CGFloat.greatestFiniteMagnitude,
239+
height: CGFloat.greatestFiniteMagnitude)
240+
}
241+
230242
extension CGRect: Equatable {
231243
public static func ==(lhs: CGRect, rhs: CGRect) -> Bool {
232244
return lhs.origin == rhs.origin && lhs.size == rhs.size

TestFoundation/TestNSGeometry.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class TestNSGeometry : XCTestCase {
3232
("test_CGSize_ExtendedConstruction", test_CGSize_ExtendedConstruction),
3333
("test_CGRect_BasicConstruction", test_CGRect_BasicConstruction),
3434
("test_CGRect_ExtendedConstruction", test_CGRect_ExtendedConstruction),
35+
("test_CGRect_SpecialValues", test_CGRect_SpecialValues),
3536
("test_NSEdgeInsets_BasicConstruction", test_NSEdgeInsets_BasicConstruction),
3637
("test_NSEdgeInsetsEqual", test_NSEdgeInsetsEqual),
3738
("test_NSMakePoint", test_NSMakePoint),
@@ -195,6 +196,20 @@ class TestNSGeometry : XCTestCase {
195196
XCTAssertEqual(r4.size.width, CGFloat(3))
196197
XCTAssertEqual(r4.size.height, CGFloat(4))
197198
}
199+
200+
func test_CGRect_SpecialValues() {
201+
let r1 = CGRect.null
202+
XCTAssertEqual(r1.origin.x, CGFloat.infinity)
203+
XCTAssertEqual(r1.origin.y, CGFloat.infinity)
204+
XCTAssertEqual(r1.size.width, CGFloat(0.0))
205+
XCTAssertEqual(r1.size.height, CGFloat(0.0))
206+
207+
let r2 = CGRect.infinite
208+
XCTAssertEqual(r2.origin.x, -CGFloat.greatestFiniteMagnitude / 2)
209+
XCTAssertEqual(r2.origin.y, -CGFloat.greatestFiniteMagnitude / 2)
210+
XCTAssertEqual(r2.size.width, CGFloat.greatestFiniteMagnitude)
211+
XCTAssertEqual(r2.size.height, CGFloat.greatestFiniteMagnitude)
212+
}
198213

199214
func test_NSEdgeInsets_BasicConstruction() {
200215
let i1 = NSEdgeInsets()

0 commit comments

Comments
 (0)