Skip to content

Commit dc90737

Browse files
authored
Add MKMultiPoint extensions (SwifterSwift#990)
* Add `MKMultiPoint` extensions * Remove duplicate tests for MKPolyLine coordinates
1 parent 2f5acf6 commit dc90737

File tree

6 files changed

+85
-23
lines changed

6 files changed

+85
-23
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ The changelog for **SwifterSwift**. Also see the [releases](https://github.com/S
6767
- Added `addToolbar(items:height:)` to add a toolbar to a `UITextField`. [#954](https://github.com/SwifterSwift/SwifterSwift/pull/954) by [Randhir Kumar](https://github.com/randhirkumar65)
6868
- **URL**
6969
- Added the `(unsafeString: String)` initializer for `URL` as a more conveniently to construct unsafe `URL`s from `String` by [jevonmao](https://github.com/jevonmao)
70+
- **MKMultiPoint**
71+
- Added `.coordinates` property, to return an array of coordinates for the provided multi point by [@rizwankce](https://github.com/rizwankce).
72+
7073
### Changed
7174
- **NSAttributedString**:
7275
- `bolded` maintains font size and works on all platforms except Linux. `italicized` maintains font size and works on all platforms except Linux and macOS. [#900](https://github.com/SwifterSwift/SwifterSwift/pull/900) by [guykogus](https://github.com/guykogus)
@@ -93,6 +96,8 @@ The changelog for **SwifterSwift**. Also see the [releases](https://github.com/S
9396
### Removed
9497
- **UIDatePicker**
9598
- Disabled `textColor` when compiling for target `macCatalyst` as it will crash. [#864](https://github.com/SwifterSwift/SwifterSwift/pull/864) by [guykogus](https://github.com/guykogus)
99+
- **MKPolyline**
100+
- Removed `.coordinates` property, in favour of `.coordinates` property from `MKMultiLine`. Since `MKPolyline` extends from `MKMultiLine` it should work fine. by [@rizwankce](https://github.com/rizwankce).
96101

97102
### Fixed
98103
- **Collection**
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// MKPolylineExtensions.swift - Copyright 2020 SwifterSwift
2+
3+
#if canImport(MapKit) && !os(watchOS)
4+
import MapKit
5+
6+
// MARK: - Properties
7+
8+
@available(tvOS 9.2, *)
9+
public extension MKMultiPoint {
10+
/// SwifterSwift: Return an Array of coordinates representing the provided multi point.
11+
var coordinates: [CLLocationCoordinate2D] {
12+
var coords = [CLLocationCoordinate2D](repeating: kCLLocationCoordinate2DInvalid, count: pointCount)
13+
getCoordinates(&coords, range: NSRange(location: 0, length: pointCount))
14+
return coords
15+
}
16+
}
17+
18+
#endif
19+

Sources/SwifterSwift/MapKit/MKPolylineExtensions.swift

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,4 @@ public extension MKPolyline {
1616
}
1717
}
1818

19-
// MARK: - Properties
20-
21-
@available(tvOS 9.2, *)
22-
public extension MKPolyline {
23-
/// SwifterSwift: Return an Array of coordinates representing the provided polyline.
24-
var coordinates: [CLLocationCoordinate2D] {
25-
var coords = [CLLocationCoordinate2D](repeating: kCLLocationCoordinate2DInvalid, count: pointCount)
26-
getCoordinates(&coords, range: NSRange(location: 0, length: pointCount))
27-
return coords
28-
}
29-
}
30-
3119
#endif

SwifterSwift.xcodeproj/project.pbxproj

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,13 @@
368368
58253514259CF23B00407B78 /* MeasurementExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58253511259CF23B00407B78 /* MeasurementExtensions.swift */; };
369369
58253515259CF23B00407B78 /* MeasurementExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58253511259CF23B00407B78 /* MeasurementExtensions.swift */; };
370370
5C88FBEC234CC1280065A942 /* NSColorExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C88FBEB234CC1280065A942 /* NSColorExtensionsTests.swift */; };
371+
658A02F2270F01C500DBA951 /* MKMultiPointExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658A02F1270F01C500DBA951 /* MKMultiPointExtensions.swift */; };
372+
658A02F3270F01D200DBA951 /* MKMultiPointExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658A02F1270F01C500DBA951 /* MKMultiPointExtensions.swift */; };
373+
658A02F4270F01D200DBA951 /* MKMultiPointExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658A02F1270F01C500DBA951 /* MKMultiPointExtensions.swift */; };
374+
658A02F5270F01D300DBA951 /* MKMultiPointExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658A02F1270F01C500DBA951 /* MKMultiPointExtensions.swift */; };
375+
658A02F7270F024700DBA951 /* MKMultiPointTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658A02F6270F024700DBA951 /* MKMultiPointTests.swift */; };
376+
658A02F8270F024B00DBA951 /* MKMultiPointTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658A02F6270F024700DBA951 /* MKMultiPointTests.swift */; };
377+
658A02F9270F024C00DBA951 /* MKMultiPointTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658A02F6270F024700DBA951 /* MKMultiPointTests.swift */; };
371378
664CB96D2171863B00FC87B4 /* BidirectionalCollectionExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 664CB96C2171863B00FC87B4 /* BidirectionalCollectionExtensions.swift */; };
372379
664CB96E2171863B00FC87B4 /* BidirectionalCollectionExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 664CB96C2171863B00FC87B4 /* BidirectionalCollectionExtensions.swift */; };
373380
664CB96F2171863B00FC87B4 /* BidirectionalCollectionExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 664CB96C2171863B00FC87B4 /* BidirectionalCollectionExtensions.swift */; };
@@ -814,6 +821,8 @@
814821
58253511259CF23B00407B78 /* MeasurementExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MeasurementExtensions.swift; sourceTree = "<group>"; };
815822
5C88FBEB234CC1280065A942 /* NSColorExtensionsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSColorExtensionsTests.swift; sourceTree = "<group>"; };
816823
5E36CB6424AC9909007727DA /* MyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyViewController.swift; sourceTree = "<group>"; };
824+
658A02F1270F01C500DBA951 /* MKMultiPointExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MKMultiPointExtensions.swift; sourceTree = "<group>"; };
825+
658A02F6270F024700DBA951 /* MKMultiPointTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MKMultiPointTests.swift; sourceTree = "<group>"; };
817826
664CB96C2171863B00FC87B4 /* BidirectionalCollectionExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BidirectionalCollectionExtensions.swift; sourceTree = "<group>"; };
818827
664CB971217186E900FC87B4 /* BidirectionalCollectionExtensionsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BidirectionalCollectionExtensionsTests.swift; sourceTree = "<group>"; };
819828
664CB9752171899800FC87B4 /* BinaryFloatingPointExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BinaryFloatingPointExtensions.swift; sourceTree = "<group>"; };
@@ -1390,6 +1399,7 @@
13901399
children = (
13911400
074C8D80224F86450050F040 /* MKMapViewExtensions.swift */,
13921401
784C752E2051BD26001C48DD /* MKPolylineExtensions.swift */,
1402+
658A02F1270F01C500DBA951 /* MKMultiPointExtensions.swift */,
13931403
);
13941404
path = MapKit;
13951405
sourceTree = "<group>";
@@ -1399,6 +1409,7 @@
13991409
children = (
14001410
D9F36CF523521F440057258F /* MKMapViewTests.swift */,
14011411
784C75362051BE1D001C48DD /* MKPolylineTests.swift */,
1412+
658A02F6270F024700DBA951 /* MKMultiPointTests.swift */,
14021413
);
14031414
path = MapKitTests;
14041415
sourceTree = "<group>";
@@ -2015,6 +2026,7 @@
20152026
17A4B79326CCFFAE007D299F /* SKSpriteNodeExtensions.swift in Sources */,
20162027
077BA08F1F6BE83600D9C4AC /* UserDefaultsExtensions.swift in Sources */,
20172028
07B7F1A11F5EB42000E6F910 /* UISwitchExtensions.swift in Sources */,
2029+
658A02F2270F01C500DBA951 /* MKMultiPointExtensions.swift in Sources */,
20182030
0722CB3820C2E46C00C6C1B6 /* UIWindowExtensions.swift in Sources */,
20192031
07B7F1A41F5EB42000E6F910 /* UITextFieldExtensions.swift in Sources */,
20202032
07B7F20B1F5EB43C00E6F910 /* ArrayExtensions.swift in Sources */,
@@ -2170,6 +2182,7 @@
21702182
0782A5B523DA98C900E562C0 /* CLLocationArrayExtensions.swift in Sources */,
21712183
9D806A422258B931008E500A /* SCNVector3Extensions.swift in Sources */,
21722184
F887E93A2505AB87006CB4F7 /* FontExtensions.swift in Sources */,
2185+
658A02F3270F01D200DBA951 /* MKMultiPointExtensions.swift in Sources */,
21732186
07B7F1B21F5EB42000E6F910 /* UINavigationItemExtensions.swift in Sources */,
21742187
9D806A5C2258D2B8008E500A /* SCNMaterialExtensions.swift in Sources */,
21752188
9D806A872258F624008E500A /* SCNGeometryExtensions.swift in Sources */,
@@ -2255,6 +2268,7 @@
22552268
07B7F1EE1F5EB43B00E6F910 /* DoubleExtensions.swift in Sources */,
22562269
9D806A762258E0D8008E500A /* SCNConeExtensions.swift in Sources */,
22572270
07B7F1F31F5EB43B00E6F910 /* OptionalExtensions.swift in Sources */,
2271+
658A02F4270F01D200DBA951 /* MKMultiPointExtensions.swift in Sources */,
22582272
074EAF1D1F7BA68B00C74636 /* UIFontExtensions.swift in Sources */,
22592273
18C8E5E02074C60C00F8AF51 /* SequenceExtensions.swift in Sources */,
22602274
07B7F1BE1F5EB42200E6F910 /* UIAlertControllerExtensions.swift in Sources */,
@@ -2297,6 +2311,7 @@
22972311
9D806A632258D503008E500A /* SCNPlaneExtensions.swift in Sources */,
22982312
07B7F1E11F5EB43B00E6F910 /* OptionalExtensions.swift in Sources */,
22992313
9D9784DE1FCAE42600D988E7 /* StringProtocolExtensions.swift in Sources */,
2314+
658A02F5270F01D300DBA951 /* MKMultiPointExtensions.swift in Sources */,
23002315
664CB9702171863B00FC87B4 /* BidirectionalCollectionExtensions.swift in Sources */,
23012316
07B7F2221F5EB44600E6F910 /* CGPointExtensions.swift in Sources */,
23022317
9D806A442258B931008E500A /* SCNVector3Extensions.swift in Sources */,
@@ -2413,6 +2428,7 @@
24132428
0782A5B223DA98C000E562C0 /* CLLocationArrayExtensionsTests.swift in Sources */,
24142429
F850972424AF72690007F74D /* MyViewController.swift in Sources */,
24152430
9D806A472258B9BB008E500A /* SCNVector3ExtensionsTests.swift in Sources */,
2431+
658A02F7270F024700DBA951 /* MKMultiPointTests.swift in Sources */,
24162432
07C50D8C1F5EB06000F46E5A /* CGFloatExtensionsTests.swift in Sources */,
24172433
42F53FF02039C7140070DC11 /* UIStackViewExtensionsTests.swift in Sources */,
24182434
07C50D3E1F5EB04700F46E5A /* UITextViewExtensionsTests.swift in Sources */,
@@ -2483,6 +2499,7 @@
24832499
078916DB2076077000AC0665 /* FloatingPointExtensionsTests.swift in Sources */,
24842500
F8C1AE75225B871F0045D5A0 /* NSRegularExpressionExtensionsTests.swift in Sources */,
24852501
07C50D4E1F5EB04700F46E5A /* UISliderExtensionsTests.swift in Sources */,
2502+
658A02F8270F024B00DBA951 /* MKMultiPointTests.swift in Sources */,
24862503
07C50D451F5EB04700F46E5A /* ColorExtensionsTests.swift in Sources */,
24872504
784C75382051BE1D001C48DD /* MKPolylineTests.swift in Sources */,
24882505
07C50D491F5EB04700F46E5A /* UINavigationBarExtensionTests.swift in Sources */,
@@ -2630,6 +2647,7 @@
26302647
F8A710F123BF3F8600112DAD /* EdgeInsetsExtensionsTests.swift in Sources */,
26312648
116090B624187D8100DDCD01 /* CGRectExtensionsTests.swift in Sources */,
26322649
07FE50471F891C95000766AA /* SignedNumericExtensionsTests.swift in Sources */,
2650+
658A02F9270F024C00DBA951 /* MKMultiPointTests.swift in Sources */,
26332651
985C1B942479795B008AAB0E /* WKWebViewExtensionsTests.swift in Sources */,
26342652
A94AA78C202819B400E229A5 /* FileManagerExtensionsTests.swift in Sources */,
26352653
9D806AA12258FF1A008E500A /* SCNSphereExtensionsTests.swift in Sources */,
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// MKMultiPointTests.swift - Copyright 2020 SwifterSwift
2+
3+
@testable import SwifterSwift
4+
import XCTest
5+
6+
#if canImport(MapKit)
7+
import MapKit
8+
9+
import struct CoreLocation.CLLocationCoordinate2D
10+
11+
final class MKMultiPointTests: XCTestCase {
12+
let coordinates = [
13+
(37.330514, -121.888863),
14+
(37.330832, -121.888337),
15+
(37.329599, -121.886859),
16+
(37.330019, -121.885993),
17+
(37.329767, -121.885813)
18+
].map(CLLocationCoordinate2D.init)
19+
20+
func testCoordinatesForPolyLine() {
21+
let polyline = MKPolyline(coordinates: coordinates)
22+
23+
XCTAssertEqual(coordinates.count, polyline.coordinates.count)
24+
25+
for (coordinate1, coordinate2) in zip(coordinates, polyline.coordinates) {
26+
XCTAssertEqual(coordinate1.latitude, coordinate2.latitude, accuracy: 0.000000001)
27+
XCTAssertEqual(coordinate1.longitude, coordinate2.longitude, accuracy: 0.000000001)
28+
}
29+
}
30+
31+
func testCoordinatesForPolygon() {
32+
let ploygon = MKPolygon(coordinates: coordinates, count: coordinates.count)
33+
34+
XCTAssertEqual(coordinates.count, ploygon.coordinates.count)
35+
36+
for (coordinate1, coordinate2) in zip(coordinates, ploygon.coordinates) {
37+
XCTAssertEqual(coordinate1.latitude, coordinate2.latitude, accuracy: 0.000000001)
38+
XCTAssertEqual(coordinate1.longitude, coordinate2.longitude, accuracy: 0.000000001)
39+
}
40+
}
41+
}
42+
43+
#endif

Tests/MapKitTests/MKPolylineTests.swift

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,6 @@ final class MKPolylineTests: XCTestCase {
2828
XCTAssertEqual(coordinate1.longitude, coordinate2.longitude, accuracy: 0.000000001)
2929
}
3030
}
31-
32-
func testCoordinates() {
33-
let polyline = MKPolyline(coordinates: coordinates)
34-
35-
XCTAssertEqual(coordinates.count, polyline.coordinates.count)
36-
37-
for (coordinate1, coordinate2) in zip(coordinates, polyline.coordinates) {
38-
XCTAssertEqual(coordinate1.latitude, coordinate2.latitude, accuracy: 0.000000001)
39-
XCTAssertEqual(coordinate1.longitude, coordinate2.longitude, accuracy: 0.000000001)
40-
}
41-
}
4231
}
4332

4433
#endif

0 commit comments

Comments
 (0)