import Bindings import XCTestDynamicOverlay public struct LoadCmix { public var run: (String, Data, Data) throws -> Cmix public func callAsFunction( storageDir: String, password: Data, cmixParamsJSON: Data ) throws -> Cmix { try run(storageDir, password, cmixParamsJSON) } } extension LoadCmix { public static let live = LoadCmix { storageDir, password, cmixParamsJSON in var error: NSError? let bindingsCmix = BindingsLoadCmix(storageDir, password, cmixParamsJSON, &error) if let error = error { throw error } guard let bindingsCmix = bindingsCmix else { fatalError("BindingsLoadCmix returned `nil` without providing error") } return Cmix.live(bindingsCmix) } } extension LoadCmix { public static let unimplemented = LoadCmix( run: XCTUnimplemented("\(Self.self)") ) }