diff --git a/.swiftlint.yml b/.swiftlint.yml index 6387891..d1ab10e 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,5 +1,6 @@ disabled_rules: - trailing_comma + - todo excluded: - .build - .git diff --git a/Sources/SwiftH3/H3Coordinate.swift b/Sources/SwiftH3/H3Coordinate.swift index 6a81c30..da5f4b1 100644 --- a/Sources/SwiftH3/H3Coordinate.swift +++ b/Sources/SwiftH3/H3Coordinate.swift @@ -27,7 +27,7 @@ public struct H3Coordinate { } extension H3Coordinate: Equatable { - + public static func == (lhs: H3Coordinate, rhs: H3Coordinate) -> Bool { lhs.lat == rhs.lat && lhs.lon == rhs.lon } diff --git a/Sources/SwiftH3/H3Index.swift b/Sources/SwiftH3/H3Index.swift index cae3cc7..a759453 100644 --- a/Sources/SwiftH3/H3Index.swift +++ b/Sources/SwiftH3/H3Index.swift @@ -117,8 +117,7 @@ extension H3Index { gridDiskError = gridDisk(value, ringK, ptr.baseAddress) } if gridDiskError.code != .success { - // TODO: throw - return [] + throw gridDiskError.code } return indices.map { H3Index($0) } @@ -161,12 +160,11 @@ extension H3Index { /// - Parameter resolution: The resolution for the parent /// - Returns: The parent index at that resolution. /// Can be nil if invalid - public func children(at resolution: Int) -> [H3Index] { + public func children(at resolution: Int) throws -> [H3Index] { var maxChildren: Int64 = 0 let maxChildrenError = cellToChildrenSize(value, Int32(resolution), &maxChildren) if maxChildrenError.code != .success { - // TODO: Throw - return [] + throw maxChildrenError.code } var error: H3Error @@ -176,8 +174,7 @@ extension H3Index { ) error = cellToChildren(value, Int32(resolution), &children) if error.code != .success { - // TODO: throw - return [] + throw error.code } return children diff --git a/Tests/SwiftH3Tests/H3IndexTests.swift b/Tests/SwiftH3Tests/H3IndexTests.swift index 412c514..14a36cd 100644 --- a/Tests/SwiftH3Tests/H3IndexTests.swift +++ b/Tests/SwiftH3Tests/H3IndexTests.swift @@ -91,13 +91,13 @@ final class H3IndexTests: XCTestCase { func testChildren() { let index = H3Index(0x8a2a10766d87fff) - XCTAssertEqual(index.children(at: 9), []) + XCTAssertThrowsError(try index.children(at: 9), "Resolution is lower than index resolution") let expectedRes11 = [ 0x8b2a10766d80fff, 0x8b2a10766d81fff, 0x8b2a10766d82fff, 0x8b2a10766d83fff, 0x8b2a10766d84fff, 0x8b2a10766d85fff, 0x8b2a10766d86fff ].map { H3Index($0) } - XCTAssertEqual(index.children(at: 11), expectedRes11) + XCTAssertEqual(try index.children(at: 11), expectedRes11) let expectedRes12 = [ 0x8c2a10766d801ff, 0x8c2a10766d803ff, 0x8c2a10766d805ff, 0x8c2a10766d807ff, @@ -114,7 +114,7 @@ final class H3IndexTests: XCTestCase { 0x8c2a10766d865ff, 0x8c2a10766d867ff, 0x8c2a10766d869ff, 0x8c2a10766d86bff, 0x8c2a10766d86dff ].map { H3Index($0) } - XCTAssertEqual(index.children(at: 12), expectedRes12) + XCTAssertEqual(try index.children(at: 12), expectedRes12) } func testCenterChild() { @@ -142,7 +142,21 @@ final class H3IndexTests: XCTestCase { ]) let cells = H3Index.polygonToCells(polygon: polygon, resolution: 9) - XCTAssertEqual(cells, [0x892a100da4bffff, 0x892a1072d2fffff, 0x892a1072993ffff, 0x892a100da4fffff, 0x892a100da7bffff, 0x892a1072997ffff, 0x892a1072987ffff, 0x892a10729b3ffff, 0x892a100da43ffff, 0x892a1072d27ffff, 0x892a100da5bffff, 0x892a10729b7ffff, 0x892a10729a3ffff].map(H3Index.init)) + XCTAssertEqual(cells, [ + 0x892a100da4bffff, + 0x892a1072d2fffff, + 0x892a1072993ffff, + 0x892a100da4fffff, + 0x892a100da7bffff, + 0x892a1072997ffff, + 0x892a1072987ffff, + 0x892a10729b3ffff, + 0x892a100da43ffff, + 0x892a1072d27ffff, + 0x892a100da5bffff, + 0x892a10729b7ffff, + 0x892a10729a3ffff + ].map(H3Index.init)) } static var allTests = [