import Combine import Foundation public struct MockNetworkMonitor: NetworkMonitoring { private let statusRelay = PassthroughSubject<NetworkStatus, Never>() public var connType: AnyPublisher<ConnectionType, Never> { Just(.wifi).eraseToAnyPublisher() } public var statusPublisher: AnyPublisher<NetworkStatus, Never> { statusRelay.eraseToAnyPublisher() } public var xxStatus: NetworkStatus { .available } public init() { // TODO } public func start() { simulateOscilation(.available) } public func update(_ status: Bool) { // TODO } private func simulateOscilation(_ status: NetworkStatus) { statusRelay.send(status) if status == .available { DispatchQueue.main.asyncAfter(deadline: .now() + 10) { simulateOscilation(.internetNotAvailable) } } else if status == .internetNotAvailable { DispatchQueue.main.asyncAfter(deadline: .now() + 5) { simulateOscilation(.available) } } } }