TM-SGNL-iOS/SignalServiceKit/Mocks/Util/ConsumableMockPromise.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

38 lines
827 B
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
#if TESTABLE_BUILD
/// A mock value standing in for a promise. Useful when mocking APIs that return
/// promises.
enum ConsumableMockPromise<V> {
case value(V)
case error(Error = OWSGenericError("Intentional failure!"))
case unset
mutating func consumeIntoPromise() -> Promise<V> {
defer { self = .unset }
switch self {
case .value(let v):
return .value(v)
case let .error(error):
return Promise(error: error)
case .unset:
owsFail("Mock not set!")
}
}
func ensureUnset() {
switch self {
case .value, .error:
owsFail("Mock was set!")
case .unset:
break
}
}
}
#endif