Skip to content

Commit d42d739

Browse files
committed
CGRect extended initializers added
1 parent 3c7cb5d commit d42d739

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

Foundation/NSGeometry.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,24 @@ public struct CGRect {
209209
}
210210
}
211211

212+
extension CGRect {
213+
public static var zero: CGRect {
214+
return CGRect(origin: CGPoint(), size: CGSize())
215+
}
216+
217+
public init(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat) {
218+
self.init(origin: CGPoint(x: x, y: y), size: CGSize(width: width, height: height))
219+
}
220+
221+
public init(x: Double, y: Double, width: Double, height: Double) {
222+
self.init(origin: CGPoint(x: x, y: y), size: CGSize(width: width, height: height))
223+
}
224+
225+
public init(x: Int, y: Int, width: Int, height: Int) {
226+
self.init(origin: CGPoint(x: x, y: y), size: CGSize(width: width, height: height))
227+
}
228+
}
229+
212230
extension CGRect: Equatable {
213231
public static func ==(lhs: CGRect, rhs: CGRect) -> Bool {
214232
return lhs.origin == rhs.origin && lhs.size == rhs.size

TestFoundation/TestNSGeometry.swift

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class TestNSGeometry : XCTestCase {
3131
("test_CGSize_BasicConstruction", test_CGSize_BasicConstruction),
3232
("test_CGSize_ExtendedConstruction", test_CGSize_ExtendedConstruction),
3333
("test_CGRect_BasicConstruction", test_CGRect_BasicConstruction),
34+
("test_CGRect_ExtendedConstruction", test_CGRect_ExtendedConstruction),
3435
("test_NSEdgeInsets_BasicConstruction", test_NSEdgeInsets_BasicConstruction),
3536
("test_NSEdgeInsetsEqual", test_NSEdgeInsetsEqual),
3637
("test_NSMakePoint", test_NSMakePoint),
@@ -168,6 +169,32 @@ class TestNSGeometry : XCTestCase {
168169
XCTAssertEqual(r2.size.width, s.width)
169170
XCTAssertEqual(r2.size.height, s.height)
170171
}
172+
173+
func test_CGRect_ExtendedConstruction() {
174+
let r1 = CGRect.zero
175+
XCTAssertEqual(r1.origin.x, CGFloat(0.0))
176+
XCTAssertEqual(r1.origin.y, CGFloat(0.0))
177+
XCTAssertEqual(r1.size.width, CGFloat(0.0))
178+
XCTAssertEqual(r1.size.height, CGFloat(0.0))
179+
180+
let r2 = CGRect(x: CGFloat(1.2), y: CGFloat(2.3), width: CGFloat(3.4), height: CGFloat(4.5))
181+
XCTAssertEqual(r2.origin.x, CGFloat(1.2))
182+
XCTAssertEqual(r2.origin.y, CGFloat(2.3))
183+
XCTAssertEqual(r2.size.width, CGFloat(3.4))
184+
XCTAssertEqual(r2.size.height, CGFloat(4.5))
185+
186+
let r3 = CGRect(x: Double(1.2), y: Double(2.3), width: Double(3.4), height: Double(4.5))
187+
XCTAssertEqual(r3.origin.x, CGFloat(1.2))
188+
XCTAssertEqual(r3.origin.y, CGFloat(2.3))
189+
XCTAssertEqual(r3.size.width, CGFloat(3.4))
190+
XCTAssertEqual(r3.size.height, CGFloat(4.5))
191+
192+
let r4 = CGRect(x: Int(1), y: Int(2), width: Int(3), height: Int(4))
193+
XCTAssertEqual(r4.origin.x, CGFloat(1))
194+
XCTAssertEqual(r4.origin.y, CGFloat(2))
195+
XCTAssertEqual(r4.size.width, CGFloat(3))
196+
XCTAssertEqual(r4.size.height, CGFloat(4))
197+
}
171198

172199
func test_NSEdgeInsets_BasicConstruction() {
173200
let i1 = NSEdgeInsets()

0 commit comments

Comments
 (0)