46 lines
1.3 KiB
Swift
46 lines
1.3 KiB
Swift
//
|
|
// SwiftLocationMock.swift
|
|
// AutoCatCoreTests
|
|
//
|
|
// Created by Selim Mustafaev on 02.08.2024.
|
|
// Copyright © 2024 Selim Mustafaev. All rights reserved.
|
|
//
|
|
|
|
import AutoCatCore
|
|
import CoreLocation
|
|
import SwiftLocation
|
|
|
|
final class SwiftLocationMock {
|
|
|
|
var authorizationStatus: CLAuthorizationStatus = .notDetermined
|
|
var requestedStatus: CLAuthorizationStatus = .notDetermined
|
|
var location: CLLocation?
|
|
|
|
var requestLocationTime: TimeInterval = 0
|
|
var requestLocationCount = 0
|
|
}
|
|
|
|
extension SwiftLocationMock: SwiftLocationProtocol {
|
|
|
|
func requestPermission(_ permission: LocationPermission) async throws -> CLAuthorizationStatus {
|
|
authorizationStatus = requestedStatus
|
|
return requestedStatus
|
|
}
|
|
|
|
func requestLocation(accuracy filters: AccuracyFilters?,
|
|
timeout: TimeInterval?) async throws -> Tasks.ContinuousUpdateLocation.StreamEvent {
|
|
|
|
requestLocationCount += 1
|
|
|
|
if requestLocationTime > 0 {
|
|
try await Task.sleep(nanoseconds: UInt64(requestLocationTime*1_000_000_000))
|
|
}
|
|
|
|
if let location {
|
|
return .didUpdateLocations([location])
|
|
} else {
|
|
return .didUpdateLocations([])
|
|
}
|
|
}
|
|
}
|