From 09a2e2772d10220279cdaa74e753e7df8be69e8d Mon Sep 17 00:00:00 2001 From: Ian Wagner Date: Wed, 15 Nov 2023 16:29:47 +0900 Subject: [PATCH] Upgrade UniFFI; add more extensive core integration test for iOS; first stage tests for Android --- Package.resolved | 9 + Package.swift | 16 +- README.md | 2 +- .../ferrostar/core/FerrostarCoreTest.kt | 82 ++++++ .../ferrostar/core/ValhallaCoreTest.kt | 4 +- .../ferrostar/core/FerrostarCore.kt | 14 +- .../FerrostarCoreTests.swift | 30 ++- apple/Tests/FerrostarCoreTests/Fixtures.swift | 205 ++++++++++++++ .../ValhallaCoreTests.swift | 250 +----------------- .../test200MockRouteResponse.1.txt | 42 +++ .../testValhallaRouteParsing.1.txt | 93 +++++++ common/Cargo.lock | 159 ++++++----- common/Cargo.toml | 2 +- common/ferrostar/Cargo.toml | 2 +- 14 files changed, 563 insertions(+), 347 deletions(-) create mode 100644 android/core/src/androidTest/java/com/stadiamaps/ferrostar/core/FerrostarCoreTest.kt create mode 100644 apple/Tests/FerrostarCoreTests/Fixtures.swift create mode 100644 apple/Tests/FerrostarCoreTests/__Snapshots__/FerrostarCoreTests/test200MockRouteResponse.1.txt create mode 100644 apple/Tests/FerrostarCoreTests/__Snapshots__/ValhallaCoreTests/testValhallaRouteParsing.1.txt diff --git a/Package.resolved b/Package.resolved index 71d8ec17..afc595a9 100644 --- a/Package.resolved +++ b/Package.resolved @@ -9,6 +9,15 @@ "revision" : "6199f3f502ad926653a9d5d1e12206f52f0aa55e" } }, + { + "identity" : "swift-snapshot-testing", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/swift-snapshot-testing", + "state" : { + "revision" : "4862d48562483d274a2ac7522d905c9237a31a48", + "version" : "1.15.0" + } + }, { "identity" : "swift-syntax", "kind" : "remoteSourceControl", diff --git a/Package.swift b/Package.swift index 1d4d816e..04d8588b 100644 --- a/Package.swift +++ b/Package.swift @@ -15,8 +15,8 @@ if useLocalFramework { path: "./common/target/ios/libferrostar-rs.xcframework" ) } else { - let releaseTag = "0.0.12" - let releaseChecksum = "11a0edc5f3a8c912091cdd7cecc867dfba0cad1867d97e3c6227349fe903ccc8" + let releaseTag = "0.0.13" + let releaseChecksum = "041951f5c8aaf44bd60d5a90861d24cba4821a4601d1b091a9b7a64d739e01c4" binaryTarget = .binaryTarget( name: "FerrostarCoreRS", url: "https://github.com/stadiamaps/ferrostar/releases/download/\(releaseTag)/libferrostar-rs.xcframework.zip", @@ -28,7 +28,7 @@ if useLocalFramework { let package = Package( name: "FerrostarCore", platforms: [ - .iOS(.v16), + .iOS(.v15), ], products: [ // Products define the executables and libraries a package produces, and make them visible to other packages. @@ -42,8 +42,11 @@ let package = Package( ), ], dependencies: [ -// .package(url: "https://github.com/maplibre/maplibre-gl-native-distribution", .upToNextMajor(from: "5.13.0")), .package(url: "https://github.com/stadiamaps/maplibre-swiftui-dsl-playground", branch: "main"), + .package( + url: "https://github.com/pointfreeco/swift-snapshot-testing", + from: "1.15.0" + ), ], targets: [ binaryTarget, @@ -69,7 +72,10 @@ let package = Package( ), .testTarget( name: "FerrostarCoreTests", - dependencies: ["FerrostarCore"], + dependencies: [ + "FerrostarCore", + .product(name: "SnapshotTesting", package: "swift-snapshot-testing"), + ], path: "apple/Tests/FerrostarCoreTests" ), ] diff --git a/README.md b/README.md index 30ade423..48873fe4 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ and it leverages macros. ### iOS -We plan to start iOS support at version 16. +We plan to start iOS support at version 15. Our general policy will be to support the current and at least the previous major version, extending to two major versions if possible. diff --git a/android/core/src/androidTest/java/com/stadiamaps/ferrostar/core/FerrostarCoreTest.kt b/android/core/src/androidTest/java/com/stadiamaps/ferrostar/core/FerrostarCoreTest.kt new file mode 100644 index 00000000..daeedfc3 --- /dev/null +++ b/android/core/src/androidTest/java/com/stadiamaps/ferrostar/core/FerrostarCoreTest.kt @@ -0,0 +1,82 @@ +package com.stadiamaps.ferrostar.core + +import kotlinx.coroutines.test.runTest +import okhttp3.OkHttpClient +import okhttp3.ResponseBody.Companion.toResponseBody +import okhttp3.mock.MediaTypes +import okhttp3.mock.MockInterceptor +import okhttp3.mock.eq +import okhttp3.mock.get +import okhttp3.mock.post +import okhttp3.mock.respond +import okhttp3.mock.rule +import okhttp3.mock.url +import org.junit.Assert.assertEquals +import org.junit.Assert.fail +import org.junit.Test +import uniffi.ferrostar.GeographicCoordinates +import uniffi.ferrostar.Route +import uniffi.ferrostar.RouteAdapter +import uniffi.ferrostar.RouteRequest +import uniffi.ferrostar.RouteRequestGenerator +import uniffi.ferrostar.RouteResponseParser +import uniffi.ferrostar.UserLocation +import java.time.Instant + +private val valhallaEndpointUrl = "https://api.stadiamaps.com/navigate/v1" + +// Simple test to ensure that the extensibility with native code is working. + +class MockRouteRequestGenerator: RouteRequestGenerator { + override fun generateRequest( + userLocation: UserLocation, + waypoints: List + ): RouteRequest = RouteRequest.HttpPost(valhallaEndpointUrl, mapOf(), byteArrayOf()) + +} + +class MockRouteResponseParser(private val routes: List) : RouteResponseParser { + override fun parseResponse(response: ByteArray): List = routes +} + +class FerrostarCoreTest { + private val errorBody = """ + { + "error": "No valid authentication provided." + } + """.trimIndent().toResponseBody(MediaTypes.MEDIATYPE_JSON) + + @Test + fun test401UnauthorizedRouteResponse() = runTest { + val interceptor = MockInterceptor().apply { + rule(post, url eq valhallaEndpointUrl) { + respond(401, errorBody) + } + + rule(get) { + respond { + throw IllegalStateException("an IO error") + } + } + } + + val core = FerrostarCore( + routeAdapter = RouteAdapter(requestGenerator = MockRouteRequestGenerator(), responseParser = MockRouteResponseParser(routes = listOf())), + locationProvider = SimulatedLocationProvider(), + httpClient = OkHttpClient.Builder().addInterceptor(interceptor).build() + ) + + try { + // Tests that the core generates a request and attempts to process it, but throws due to the mocked network layer + core.getRoutes( + initialLocation = UserLocation(coordinates = GeographicCoordinates(-149.543469, 60.5347155), 0.0, null, Instant.now()), + waypoints = listOf(GeographicCoordinates(-149.5485806, 60.5349908)) + ) + fail("Expected the request to fail") + } catch (e: InvalidStatusCodeException) { + assertEquals(401, e.statusCode) + } + } + + // TODO: successful test +} \ No newline at end of file diff --git a/android/core/src/androidTest/java/com/stadiamaps/ferrostar/core/ValhallaCoreTest.kt b/android/core/src/androidTest/java/com/stadiamaps/ferrostar/core/ValhallaCoreTest.kt index 53fa2c89..e13143ea 100644 --- a/android/core/src/androidTest/java/com/stadiamaps/ferrostar/core/ValhallaCoreTest.kt +++ b/android/core/src/androidTest/java/com/stadiamaps/ferrostar/core/ValhallaCoreTest.kt @@ -229,7 +229,7 @@ const val simpleRoute = """ """ class ValhallaCoreTest { - private val valhallaEndpointUrl = "https://api.stadiamaps.com/navigate" + private val valhallaEndpointUrl = "https://api.stadiamaps.com/navigate/v1" @Test fun parseValhallaRouteResponse(): TestResult { @@ -295,4 +295,4 @@ class ValhallaCoreTest { ) } } -} \ No newline at end of file +} diff --git a/android/core/src/main/java/com/stadiamaps/ferrostar/core/FerrostarCore.kt b/android/core/src/main/java/com/stadiamaps/ferrostar/core/FerrostarCore.kt index bdc281c0..5ceb834b 100644 --- a/android/core/src/main/java/com/stadiamaps/ferrostar/core/FerrostarCore.kt +++ b/android/core/src/main/java/com/stadiamaps/ferrostar/core/FerrostarCore.kt @@ -8,21 +8,25 @@ import uniffi.ferrostar.NavigationController import uniffi.ferrostar.NavigationControllerConfig import uniffi.ferrostar.Route import uniffi.ferrostar.RouteAdapter +import uniffi.ferrostar.RouteAdapterInterface import uniffi.ferrostar.RouteRequest import uniffi.ferrostar.StepAdvanceMode import uniffi.ferrostar.UserLocation import java.net.URL -import java.util.concurrent.Executor import java.util.concurrent.Executors -class FerrostarCoreException : Exception { +open class FerrostarCoreException : Exception { constructor(message: String) : super(message) constructor(message: String, cause: Throwable) : super(message, cause) constructor(cause: Throwable) : super(cause) } +class InvalidStatusCodeException(val statusCode: Int): FerrostarCoreException("Route request failed with status code $statusCode") + +class NoResponseBodyException: FerrostarCoreException("Route request was successful but had no body bytes") + public class FerrostarCore( - val routeAdapter: RouteAdapter, + val routeAdapter: RouteAdapterInterface, val locationProvider: LocationProvider, val httpClient: OkHttpClient ) : LocationUpdateListener { @@ -59,9 +63,9 @@ public class FerrostarCore( val res = httpClient.newCall(httpRequest).await() val bodyBytes = res.body?.bytes() if (!res.isSuccessful) { - throw FerrostarCoreException("Route request failed with status code ${res.code}") + throw InvalidStatusCodeException(res.code) } else if (bodyBytes == null) { - throw FerrostarCoreException("Route request was successful but had no body bytes") + throw NoResponseBodyException() } return routeAdapter.parseResponse(bodyBytes) diff --git a/apple/Tests/FerrostarCoreTests/FerrostarCoreTests.swift b/apple/Tests/FerrostarCoreTests/FerrostarCoreTests.swift index fedcea93..6c021cb3 100644 --- a/apple/Tests/FerrostarCoreTests/FerrostarCoreTests.swift +++ b/apple/Tests/FerrostarCoreTests/FerrostarCoreTests.swift @@ -2,20 +2,21 @@ import CoreLocation @testable import FerrostarCore import UniFFI import XCTest +import SnapshotTesting -private let backendUrl = URL(string: "https://api.stadiamaps.com/route/v1")! let errorBody = Data(""" { "error": "No valid authentication provided." } """.utf8) -let errorResponse = HTTPURLResponse(url: backendUrl, statusCode: 401, httpVersion: "HTTP/1.1", headerFields: ["Content-Type": "application/json"])! +let errorResponse = HTTPURLResponse(url: valhallaEndpointUrl, statusCode: 401, httpVersion: "HTTP/1.1", headerFields: ["Content-Type": "application/json"])! + +// Simple test to ensure that the extensibility with native code is working. -// NOTE: you can also implement RouteAdapterProtocol directly. private class MockRouteRequestGenerator: RouteRequestGenerator { func generateRequest(userLocation: UniFFI.UserLocation, waypoints: [UniFFI.GeographicCoordinates]) throws -> UniFFI.RouteRequest { - return UniFFI.RouteRequest.httpPost(url: backendUrl.absoluteString, headers: [:], body: Data()) + return UniFFI.RouteRequest.httpPost(url: valhallaEndpointUrl.absoluteString, headers: [:], body: Data()) } } @@ -35,13 +36,14 @@ private class MockRouteResponseParser: RouteResponseParser { final class FerrostarCoreTests: XCTestCase { func test401UnauthorizedRouteResponse() async throws { let mockSession = MockURLSession() - mockSession.registerMock(forURL: backendUrl, withData: errorBody, andResponse: errorResponse) + mockSession.registerMock(forURL: valhallaEndpointUrl, withData: errorBody, andResponse: errorResponse) let routeAdapter = RouteAdapter(requestGenerator: MockRouteRequestGenerator(), responseParser: MockRouteResponseParser(routes: [])) let core = FerrostarCore(routeAdapter: routeAdapter, locationManager: SimulatedLocationProvider(), networkSession: mockSession) do { + // Tests that the core generates a request and attempts to process it, but throws due to the mocked network layer _ = try await core.getRoutes(initialLocation: CLLocation(latitude: 60.5347155, longitude: -149.543469), waypoints: [CLLocationCoordinate2D(latitude: 60.5349908, longitude: -149.5485806)]) XCTFail("Expected an error") } catch let FerrostarCoreError.httpStatusCode(statusCode) { @@ -49,5 +51,23 @@ final class FerrostarCoreTests: XCTestCase { } } + @MainActor + func test200MockRouteResponse() async throws { + let mockSession = MockURLSession() + mockSession.registerMock(forURL: valhallaEndpointUrl, withData: Data(), andResponse: successfulJSONResponse) + + let geom = [GeographicCoordinates(lng: 0, lat: 0), GeographicCoordinates(lng: 1, lat: 1)] + let instructionContent = VisualInstructionContent(text: "Sail straight", maneuverType: .depart, maneuverModifier: .straight, roundaboutExitDegrees: nil) + let mockRoute = UniFFI.Route(geometry: geom, distance: 1, waypoints: geom, steps: [RouteStep(geometry: geom, distance: 1, roadName: "foo road", instruction: "Sail straight", visualInstructions: [VisualInstructions(primaryContent: instructionContent, secondaryContent: nil, triggerDistanceBeforeManeuver: 42)])]) + + let routeAdapter = RouteAdapter(requestGenerator: MockRouteRequestGenerator(), responseParser: MockRouteResponseParser(routes: [mockRoute])) + + let core = FerrostarCore(routeAdapter: routeAdapter, locationManager: SimulatedLocationProvider(), networkSession: mockSession) + + // Tests that the core generates a request and then the mocked parser returns the expected routes + let routes = try await core.getRoutes(initialLocation: CLLocation(latitude: 60.5347155, longitude: -149.543469), waypoints: [CLLocationCoordinate2D(latitude: 60.5349908, longitude: -149.5485806)]) + assertSnapshot(of: routes, as: .dump) + } + // TODO: Various location services failure modes (need special mocks to simulate these) } diff --git a/apple/Tests/FerrostarCoreTests/Fixtures.swift b/apple/Tests/FerrostarCoreTests/Fixtures.swift new file mode 100644 index 00000000..65a0554e --- /dev/null +++ b/apple/Tests/FerrostarCoreTests/Fixtures.swift @@ -0,0 +1,205 @@ +import Foundation + +let valhallaEndpointUrl = URL(string: "https://api.stadiamaps.com/navigate/v1")! +let successfulJSONResponse = HTTPURLResponse(url: valhallaEndpointUrl, statusCode: 200, httpVersion: "HTTP/1.1", headerFields: ["Content-Type": "application/json"])! + +let sampleRouteData = Data(""" +{ + "routes": [ + { + "weight_name": "auto", + "weight": 56.002, + "duration": 11.488, + "distance": 284, + "legs": [ + { + "via_waypoints": [], + "annotation": { + "maxspeed": [ + { + "speed": 89, + "unit": "km/h" + }, + { + "speed": 89, + "unit": "km/h" + }, + { + "speed": 89, + "unit": "km/h" + }, + { + "speed": 89, + "unit": "km/h" + }, + { + "speed": 89, + "unit": "km/h" + }, + { + "speed": 89, + "unit": "km/h" + }, + { + "speed": 89, + "unit": "km/h" + }, + { + "speed": 89, + "unit": "km/h" + }, + { + "speed": 89, + "unit": "km/h" + } + ], + "speed": [ + 24.7, + 24.7, + 24.7, + 24.7, + 24.7, + 24.7, + 24.7, + 24.7, + 24.7 + ], + "distance": [ + 23.6, + 14.9, + 9.6, + 13.2, + 25, + 28.1, + 38.1, + 41.6, + 90 + ], + "duration": [ + 0.956, + 0.603, + 0.387, + 0.535, + 1.011, + 1.135, + 1.539, + 1.683, + 3.641 + ] + }, + "admins": [ + { + "iso_3166_1_alpha3": "USA", + "iso_3166_1": "US" + } + ], + "weight": 56.002, + "duration": 11.488, + "steps": [ + { + "intersections": [ + { + "bearings": [ + 288 + ], + "entry": [ + true + ], + "admin_index": 0, + "out": 0, + "geometry_index": 0, + "location": [ + -149.543469, + 60.534716 + ] + } + ], + "speedLimitUnit": "mph", + "maneuver": { + "type": "depart", + "instruction": "Drive west on AK 1/Seward Highway.", + "bearing_after": 288, + "bearing_before": 0, + "location": [ + -149.543469, + 60.534716 + ] + }, + "speedLimitSign": "mutcd", + "name": "Seward Highway", + "duration": 11.488, + "distance": 284, + "driving_side": "right", + "weight": 56.002, + "mode": "driving", + "ref": "AK 1", + "geometry": "wzvmrBxalf|GcCrX}A|Nu@jI}@pMkBtZ{@x^_Afj@Inn@`@veB" + }, + { + "intersections": [ + { + "bearings": [ + 89 + ], + "entry": [ + true + ], + "in": 0, + "admin_index": 0, + "geometry_index": 9, + "location": [ + -149.548581, + 60.534991 + ] + } + ], + "speedLimitUnit": "mph", + "maneuver": { + "type": "arrive", + "instruction": "You have arrived at your destination.", + "bearing_after": 0, + "bearing_before": 269, + "location": [ + -149.548581, + 60.534991 + ] + }, + "speedLimitSign": "mutcd", + "name": "Seward Highway", + "duration": 0, + "distance": 0, + "driving_side": "right", + "weight": 0, + "mode": "driving", + "ref": "AK 1", + "geometry": "}kwmrBhavf|G??" + } + ], + "distance": 284, + "summary": "AK 1" + } + ], + "geometry": "wzvmrBxalf|GcCrX}A|Nu@jI}@pMkBtZ{@x^_Afj@Inn@`@veB" + } + ], + "waypoints": [ + { + "distance": 0, + "name": "AK 1", + "location": [ + -149.543469, + 60.534715 + ] + }, + { + "distance": 0, + "name": "AK 1", + "location": [ + -149.548581, + 60.534991 + ] + } + ], + "code": "Ok" +} +""".utf8) diff --git a/apple/Tests/FerrostarCoreTests/ValhallaCoreTests.swift b/apple/Tests/FerrostarCoreTests/ValhallaCoreTests.swift index 0c6debc1..44edc3d4 100644 --- a/apple/Tests/FerrostarCoreTests/ValhallaCoreTests.swift +++ b/apple/Tests/FerrostarCoreTests/ValhallaCoreTests.swift @@ -5,259 +5,17 @@ import CoreLocation @testable import FerrostarCore import UniFFI import XCTest - -private let valhallaEndpointUrl = URL(string: "https://api.stadiamaps.com/navigate")! -private let simpleRoute = Data(""" -{ - "routes": [ - { - "weight_name": "auto", - "weight": 56.002, - "duration": 11.488, - "distance": 284, - "legs": [ - { - "via_waypoints": [], - "annotation": { - "maxspeed": [ - { - "speed": 89, - "unit": "km/h" - }, - { - "speed": 89, - "unit": "km/h" - }, - { - "speed": 89, - "unit": "km/h" - }, - { - "speed": 89, - "unit": "km/h" - }, - { - "speed": 89, - "unit": "km/h" - }, - { - "speed": 89, - "unit": "km/h" - }, - { - "speed": 89, - "unit": "km/h" - }, - { - "speed": 89, - "unit": "km/h" - }, - { - "speed": 89, - "unit": "km/h" - } - ], - "speed": [ - 24.7, - 24.7, - 24.7, - 24.7, - 24.7, - 24.7, - 24.7, - 24.7, - 24.7 - ], - "distance": [ - 23.6, - 14.9, - 9.6, - 13.2, - 25, - 28.1, - 38.1, - 41.6, - 90 - ], - "duration": [ - 0.956, - 0.603, - 0.387, - 0.535, - 1.011, - 1.135, - 1.539, - 1.683, - 3.641 - ] - }, - "admins": [ - { - "iso_3166_1_alpha3": "USA", - "iso_3166_1": "US" - } - ], - "weight": 56.002, - "duration": 11.488, - "steps": [ - { - "intersections": [ - { - "bearings": [ - 288 - ], - "entry": [ - true - ], - "admin_index": 0, - "out": 0, - "geometry_index": 0, - "location": [ - -149.543469, - 60.534716 - ] - } - ], - "speedLimitUnit": "mph", - "maneuver": { - "type": "depart", - "instruction": "Drive west on AK 1/Seward Highway.", - "bearing_after": 288, - "bearing_before": 0, - "location": [ - -149.543469, - 60.534716 - ] - }, - "speedLimitSign": "mutcd", - "name": "Seward Highway", - "duration": 11.488, - "distance": 284, - "driving_side": "right", - "weight": 56.002, - "mode": "driving", - "ref": "AK 1", - "geometry": "wzvmrBxalf|GcCrX}A|Nu@jI}@pMkBtZ{@x^_Afj@Inn@`@veB" - }, - { - "intersections": [ - { - "bearings": [ - 89 - ], - "entry": [ - true - ], - "in": 0, - "admin_index": 0, - "geometry_index": 9, - "location": [ - -149.548581, - 60.534991 - ] - } - ], - "speedLimitUnit": "mph", - "maneuver": { - "type": "arrive", - "instruction": "You have arrived at your destination.", - "bearing_after": 0, - "bearing_before": 269, - "location": [ - -149.548581, - 60.534991 - ] - }, - "speedLimitSign": "mutcd", - "name": "Seward Highway", - "duration": 0, - "distance": 0, - "driving_side": "right", - "weight": 0, - "mode": "driving", - "ref": "AK 1", - "geometry": "}kwmrBhavf|G??" - } - ], - "distance": 284, - "summary": "AK 1" - } - ], - "geometry": "wzvmrBxalf|GcCrX}A|Nu@jI}@pMkBtZ{@x^_Afj@Inn@`@veB" - } - ], - "waypoints": [ - { - "distance": 0, - "name": "AK 1", - "location": [ - -149.543469, - 60.534715 - ] - }, - { - "distance": 0, - "name": "AK 1", - "location": [ - -149.548581, - 60.534991 - ] - } - ], - "code": "Ok" -} -""".utf8) -private let successfulResponse = HTTPURLResponse(url: valhallaEndpointUrl, statusCode: 200, httpVersion: "HTTP/1.1", headerFields: ["Content-Type": "application/json"])! +import SnapshotTesting final class ValhallaCoreTests: XCTestCase { + @MainActor func testValhallaRouteParsing() async throws { let mockSession = MockURLSession() - mockSession.registerMock(forURL: valhallaEndpointUrl, withData: simpleRoute, andResponse: successfulResponse) + mockSession.registerMock(forURL: valhallaEndpointUrl, withData: sampleRouteData, andResponse: successfulJSONResponse) let core = FerrostarCore(valhallaEndpointUrl: valhallaEndpointUrl, profile: "auto", locationManager: SimulatedLocationProvider(), networkSession: mockSession) let routes = try await core.getRoutes(initialLocation: CLLocation(latitude: 60.5347155, longitude: -149.543469), waypoints: [CLLocationCoordinate2D(latitude: 60.5349908, longitude: -149.5485806)]) - XCTAssertEqual(routes.count, 1) - - // Test polyline decoding. - let expectedGeometry = [ - CLLocationCoordinate2D( - latitude: 60.534716, longitude: -149.543469 - ), - CLLocationCoordinate2D( - latitude: 60.534782, longitude: -149.543879 - ), - CLLocationCoordinate2D( - latitude: 60.534829, longitude: -149.544134 - ), - CLLocationCoordinate2D( - latitude: 60.534856, longitude: -149.5443 - ), - CLLocationCoordinate2D( - latitude: 60.534887, longitude: -149.544533 - ), - CLLocationCoordinate2D( - latitude: 60.534941, longitude: -149.544976 - ), - CLLocationCoordinate2D( - latitude: 60.534971, longitude: -149.545485 - ), - CLLocationCoordinate2D( - latitude: 60.535003, longitude: -149.546177 - ), - CLLocationCoordinate2D( - latitude: 60.535008, longitude: -149.546937 - ), - CLLocationCoordinate2D( - latitude: 60.534991, longitude: -149.548581 - ), - ] - XCTAssertEqual(routes.first!.geometry.count, expectedGeometry.count) - - // Can't compare as double is not equatable - for (result, expected) in zip(routes.first!.geometry, expectedGeometry) { - XCTAssertEqual(result.latitude, expected.latitude, accuracy: 0.000001) - XCTAssertEqual(result.longitude, expected.longitude, accuracy: 0.000001) - } + assertSnapshot(of: routes, as: .dump) } } diff --git a/apple/Tests/FerrostarCoreTests/__Snapshots__/FerrostarCoreTests/test200MockRouteResponse.1.txt b/apple/Tests/FerrostarCoreTests/__Snapshots__/FerrostarCoreTests/test200MockRouteResponse.1.txt new file mode 100644 index 00000000..076ac3d1 --- /dev/null +++ b/apple/Tests/FerrostarCoreTests/__Snapshots__/FerrostarCoreTests/test200MockRouteResponse.1.txt @@ -0,0 +1,42 @@ +▿ 1 element + ▿ Route + ▿ inner: Route + - distance: 1.0 + ▿ geometry: 2 elements + ▿ GeographicCoordinates + - lat: 0.0 + - lng: 0.0 + ▿ GeographicCoordinates + - lat: 1.0 + - lng: 1.0 + ▿ steps: 1 element + ▿ RouteStep + - distance: 1.0 + ▿ geometry: 2 elements + ▿ GeographicCoordinates + - lat: 0.0 + - lng: 0.0 + ▿ GeographicCoordinates + - lat: 1.0 + - lng: 1.0 + - instruction: "Sail straight" + ▿ roadName: Optional + - some: "foo road" + ▿ visualInstructions: 1 element + ▿ VisualInstructions + ▿ primaryContent: VisualInstructionContent + ▿ maneuverModifier: Optional + - some: ManeuverModifier.straight + ▿ maneuverType: Optional + - some: ManeuverType.depart + - roundaboutExitDegrees: Optional.none + - text: "Sail straight" + - secondaryContent: Optional.none + - triggerDistanceBeforeManeuver: 42.0 + ▿ waypoints: 2 elements + ▿ GeographicCoordinates + - lat: 0.0 + - lng: 0.0 + ▿ GeographicCoordinates + - lat: 1.0 + - lng: 1.0 diff --git a/apple/Tests/FerrostarCoreTests/__Snapshots__/ValhallaCoreTests/testValhallaRouteParsing.1.txt b/apple/Tests/FerrostarCoreTests/__Snapshots__/ValhallaCoreTests/testValhallaRouteParsing.1.txt new file mode 100644 index 00000000..d8017cbc --- /dev/null +++ b/apple/Tests/FerrostarCoreTests/__Snapshots__/ValhallaCoreTests/testValhallaRouteParsing.1.txt @@ -0,0 +1,93 @@ +▿ 1 element + ▿ Route + ▿ inner: Route + - distance: 284.0 + ▿ geometry: 10 elements + ▿ GeographicCoordinates + - lat: 60.534716 + - lng: -149.543469 + ▿ GeographicCoordinates + - lat: 60.534782 + - lng: -149.543879 + ▿ GeographicCoordinates + - lat: 60.534829 + - lng: -149.544134 + ▿ GeographicCoordinates + - lat: 60.534856 + - lng: -149.5443 + ▿ GeographicCoordinates + - lat: 60.534887 + - lng: -149.544533 + ▿ GeographicCoordinates + - lat: 60.534941 + - lng: -149.544976 + ▿ GeographicCoordinates + - lat: 60.534971 + - lng: -149.545485 + ▿ GeographicCoordinates + - lat: 60.535003 + - lng: -149.546177 + ▿ GeographicCoordinates + - lat: 60.535008 + - lng: -149.546937 + ▿ GeographicCoordinates + - lat: 60.534991 + - lng: -149.548581 + ▿ steps: 2 elements + ▿ RouteStep + - distance: 284.0 + ▿ geometry: 10 elements + ▿ GeographicCoordinates + - lat: 60.534716 + - lng: -149.543469 + ▿ GeographicCoordinates + - lat: 60.534782 + - lng: -149.543879 + ▿ GeographicCoordinates + - lat: 60.534829 + - lng: -149.544134 + ▿ GeographicCoordinates + - lat: 60.534856 + - lng: -149.5443 + ▿ GeographicCoordinates + - lat: 60.534887 + - lng: -149.544533 + ▿ GeographicCoordinates + - lat: 60.534941 + - lng: -149.544976 + ▿ GeographicCoordinates + - lat: 60.534971 + - lng: -149.545485 + ▿ GeographicCoordinates + - lat: 60.535003 + - lng: -149.546177 + ▿ GeographicCoordinates + - lat: 60.535008 + - lng: -149.546937 + ▿ GeographicCoordinates + - lat: 60.534991 + - lng: -149.548581 + - instruction: "Drive west on AK 1/Seward Highway." + ▿ roadName: Optional + - some: "Seward Highway" + - visualInstructions: 0 elements + ▿ RouteStep + - distance: 0.0 + ▿ geometry: 2 elements + ▿ GeographicCoordinates + - lat: 60.534991 + - lng: -149.548581 + ▿ GeographicCoordinates + - lat: 60.534991 + - lng: -149.548581 + - instruction: "You have arrived at your destination." + ▿ roadName: Optional + - some: "Seward Highway" + - visualInstructions: 0 elements + ▿ waypoints: 2 elements + ▿ GeographicCoordinates + - lat: 60.534715 + - lng: -149.543469 + ▿ GeographicCoordinates + - lat: 60.534991 + - lng: -149.548581 diff --git a/common/Cargo.lock b/common/Cargo.lock index 1080c60e..9d9a74e1 100644 --- a/common/Cargo.lock +++ b/common/Cargo.lock @@ -142,9 +142,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "basic-toml" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bfc506e7a2370ec239e1d072507b2a80c833083699d3c6fa176fbb4de8448c6" +checksum = "2f2139706359229bfa8f19142ac1155b4b80beafb7a60471ac5dd109d4a19778" dependencies = [ "serde", ] @@ -181,9 +181,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "byteorder" @@ -231,9 +231,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "0f8e7c90afad890484a21653d08b6e209ae34770fb5ee298f9c699fcc1e5c856" dependencies = [ "libc", ] @@ -246,9 +246,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.4.6" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" +checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" dependencies = [ "clap_builder", "clap_derive", @@ -256,9 +256,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.6" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" +checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" dependencies = [ "anstream", "anstyle", @@ -268,9 +268,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.2" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", @@ -280,9 +280,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" @@ -332,9 +332,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "errno" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "7c18ee0ed65a5f1f81cac6b1d213b69c35fa47d4252ad41f1486dbd8226fe36e" dependencies = [ "libc", "windows-sys 0.48.0", @@ -348,7 +348,7 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "ferrostar" -version = "0.0.12" +version = "0.0.13" dependencies = [ "assert-json-diff", "geo", @@ -375,9 +375,12 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fs-err" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541" +checksum = "fb5fd9bcbe8b1087cbd395b51498c01bc997cef73e778a80b77a811af5e2d29f" +dependencies = [ + "autocfg", +] [[package]] name = "generator" @@ -431,9 +434,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "libc", @@ -522,9 +525,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.149" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libm" @@ -540,15 +543,15 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -712,19 +715,19 @@ dependencies = [ [[package]] name = "proptest" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.0", + "bitflags 2.4.1", "lazy_static", "num-traits", "rand", "rand_chacha", "rand_xorshift", - "regex-syntax 0.7.5", + "regex-syntax 0.8.2", "rusty-fork", "tempfile", "unarray", @@ -786,9 +789,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] @@ -831,12 +834,6 @@ version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" -[[package]] -name = "regex-syntax" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" - [[package]] name = "regex-syntax" version = "0.8.2" @@ -871,11 +868,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.19" +version = "0.38.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed" +checksum = "80109a168d9bc0c7f483083244543a6eb0dba02295d33ca268145e6190d6df0c" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "errno", "libc", "linux-raw-sys", @@ -949,18 +946,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.189" +version = "1.0.192" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537" +checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.189" +version = "1.0.192" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5" +checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" dependencies = [ "proc-macro2", "quote", @@ -969,9 +966,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -1001,9 +998,9 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "smallvec" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "spin" @@ -1034,9 +1031,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "2.0.38" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ "proc-macro2", "quote", @@ -1045,9 +1042,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand", @@ -1058,18 +1055,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.49" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.49" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", @@ -1129,9 +1126,9 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.4" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ "log", "once_cell", @@ -1140,9 +1137,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -1179,8 +1176,8 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "uniffi" -version = "0.25.0" -source = "git+https://github.com/mozilla/uniffi-rs/?rev=b369e7c15b1b7ebca34de9028209db11b7ff353d#b369e7c15b1b7ebca34de9028209db11b7ff353d" +version = "0.25.1" +source = "git+https://github.com/mozilla/uniffi-rs/?rev=41e3f953ed6e3d8e10cde262dd269b683ac49f0e#41e3f953ed6e3d8e10cde262dd269b683ac49f0e" dependencies = [ "anyhow", "camino", @@ -1200,8 +1197,8 @@ dependencies = [ [[package]] name = "uniffi_bindgen" -version = "0.25.0" -source = "git+https://github.com/mozilla/uniffi-rs/?rev=b369e7c15b1b7ebca34de9028209db11b7ff353d#b369e7c15b1b7ebca34de9028209db11b7ff353d" +version = "0.25.1" +source = "git+https://github.com/mozilla/uniffi-rs/?rev=41e3f953ed6e3d8e10cde262dd269b683ac49f0e#41e3f953ed6e3d8e10cde262dd269b683ac49f0e" dependencies = [ "anyhow", "askama", @@ -1223,8 +1220,8 @@ dependencies = [ [[package]] name = "uniffi_build" -version = "0.25.0" -source = "git+https://github.com/mozilla/uniffi-rs/?rev=b369e7c15b1b7ebca34de9028209db11b7ff353d#b369e7c15b1b7ebca34de9028209db11b7ff353d" +version = "0.25.1" +source = "git+https://github.com/mozilla/uniffi-rs/?rev=41e3f953ed6e3d8e10cde262dd269b683ac49f0e#41e3f953ed6e3d8e10cde262dd269b683ac49f0e" dependencies = [ "anyhow", "camino", @@ -1233,8 +1230,8 @@ dependencies = [ [[package]] name = "uniffi_checksum_derive" -version = "0.25.0" -source = "git+https://github.com/mozilla/uniffi-rs/?rev=b369e7c15b1b7ebca34de9028209db11b7ff353d#b369e7c15b1b7ebca34de9028209db11b7ff353d" +version = "0.25.1" +source = "git+https://github.com/mozilla/uniffi-rs/?rev=41e3f953ed6e3d8e10cde262dd269b683ac49f0e#41e3f953ed6e3d8e10cde262dd269b683ac49f0e" dependencies = [ "quote", "syn", @@ -1242,8 +1239,8 @@ dependencies = [ [[package]] name = "uniffi_core" -version = "0.25.0" -source = "git+https://github.com/mozilla/uniffi-rs/?rev=b369e7c15b1b7ebca34de9028209db11b7ff353d#b369e7c15b1b7ebca34de9028209db11b7ff353d" +version = "0.25.1" +source = "git+https://github.com/mozilla/uniffi-rs/?rev=41e3f953ed6e3d8e10cde262dd269b683ac49f0e#41e3f953ed6e3d8e10cde262dd269b683ac49f0e" dependencies = [ "anyhow", "bytes", @@ -1257,8 +1254,8 @@ dependencies = [ [[package]] name = "uniffi_macros" -version = "0.25.0" -source = "git+https://github.com/mozilla/uniffi-rs/?rev=b369e7c15b1b7ebca34de9028209db11b7ff353d#b369e7c15b1b7ebca34de9028209db11b7ff353d" +version = "0.25.1" +source = "git+https://github.com/mozilla/uniffi-rs/?rev=41e3f953ed6e3d8e10cde262dd269b683ac49f0e#41e3f953ed6e3d8e10cde262dd269b683ac49f0e" dependencies = [ "bincode", "camino", @@ -1275,8 +1272,8 @@ dependencies = [ [[package]] name = "uniffi_meta" -version = "0.25.0" -source = "git+https://github.com/mozilla/uniffi-rs/?rev=b369e7c15b1b7ebca34de9028209db11b7ff353d#b369e7c15b1b7ebca34de9028209db11b7ff353d" +version = "0.25.1" +source = "git+https://github.com/mozilla/uniffi-rs/?rev=41e3f953ed6e3d8e10cde262dd269b683ac49f0e#41e3f953ed6e3d8e10cde262dd269b683ac49f0e" dependencies = [ "anyhow", "bytes", @@ -1286,8 +1283,8 @@ dependencies = [ [[package]] name = "uniffi_testing" -version = "0.25.0" -source = "git+https://github.com/mozilla/uniffi-rs/?rev=b369e7c15b1b7ebca34de9028209db11b7ff353d#b369e7c15b1b7ebca34de9028209db11b7ff353d" +version = "0.25.1" +source = "git+https://github.com/mozilla/uniffi-rs/?rev=41e3f953ed6e3d8e10cde262dd269b683ac49f0e#41e3f953ed6e3d8e10cde262dd269b683ac49f0e" dependencies = [ "anyhow", "camino", @@ -1298,8 +1295,8 @@ dependencies = [ [[package]] name = "uniffi_udl" -version = "0.25.0" -source = "git+https://github.com/mozilla/uniffi-rs/?rev=b369e7c15b1b7ebca34de9028209db11b7ff353d#b369e7c15b1b7ebca34de9028209db11b7ff353d" +version = "0.25.1" +source = "git+https://github.com/mozilla/uniffi-rs/?rev=41e3f953ed6e3d8e10cde262dd269b683ac49f0e#41e3f953ed6e3d8e10cde262dd269b683ac49f0e" dependencies = [ "anyhow", "uniffi_meta", @@ -1343,7 +1340,7 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "weedle2" version = "4.0.0" -source = "git+https://github.com/mozilla/uniffi-rs/?rev=b369e7c15b1b7ebca34de9028209db11b7ff353d#b369e7c15b1b7ebca34de9028209db11b7ff353d" +source = "git+https://github.com/mozilla/uniffi-rs/?rev=41e3f953ed6e3d8e10cde262dd269b683ac49f0e#41e3f953ed6e3d8e10cde262dd269b683ac49f0e" dependencies = [ "nom", ] diff --git a/common/Cargo.toml b/common/Cargo.toml index cf6311f4..dd3b0a2d 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -11,4 +11,4 @@ insta.opt-level = 3 similar.opt-level = 3 [workspace.dependencies] -uniffi = { git = "https://github.com/mozilla/uniffi-rs/", rev = "b369e7c15b1b7ebca34de9028209db11b7ff353d" } \ No newline at end of file +uniffi = { git = "https://github.com/mozilla/uniffi-rs/", rev = "41e3f953ed6e3d8e10cde262dd269b683ac49f0e" } \ No newline at end of file diff --git a/common/ferrostar/Cargo.toml b/common/ferrostar/Cargo.toml index cf5d64a1..2f973614 100644 --- a/common/ferrostar/Cargo.toml +++ b/common/ferrostar/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ferrostar" -version = "0.0.12" +version = "0.0.13" authors = ["Ian Wagner ", "Luke Seelenbinder "] license = "BSD-3-Clause" repository = "https://github.com/stadiamaps/ferrostar"