Sources/Confidence/TestHelpers/Extensions.swift (40 lines of code) (raw):

import Foundation extension URLRequest { public func decodeBody<T: Codable>(type: T.Type) -> T? { guard let bodyStream = self.httpBodyStream else { return nil } bodyStream.open() let bufferSize: Int = 128 let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: bufferSize) var data = Data() while bodyStream.hasBytesAvailable { let readBytes = bodyStream.read(buffer, maxLength: bufferSize) data.append(buffer, count: readBytes) } buffer.deallocate() bodyStream.close() let decoder = JSONDecoder() decoder.dateDecodingStrategy = .iso8601 do { return try decoder.decode(type, from: data) } catch { return nil } } } extension [ResolvedValue] { func toCacheData(context: ConfidenceStruct, resolveToken: String) -> FlagResolution { return FlagResolution( context: context, flags: self, resolveToken: resolveToken ) } } /// Used for testing public protocol DispatchQueueType { func async(execute work: @escaping @convention(block) () -> Void) } extension DispatchQueue: DispatchQueueType { public func async(execute work: @escaping @convention(block) () -> Void) { async(group: nil, qos: .unspecified, flags: [], execute: work) } }