Add new DSL methods to workaround Swift 3’s removal of parameter splat.

This commit is contained in:
Tadeas Kriz 2016-11-09 12:08:01 +01:00
parent dd44ff208b
commit f45238f485
1 changed files with 101 additions and 11 deletions

View File

@ -19,19 +19,11 @@ public class MockManager {
}
public func getter<T>(_ property: String, original: ((Void) -> T)? = nil) -> T {
return call(getterName(property), parameters: Void(), original: original)
fileprivate func callInternal<IN, OUT>(_ method: String, parameters: IN, original: ((IN) -> OUT)? = nil) -> OUT {
return try! callThrowsInternal(method, parameters: parameters, original: original)
}
public func setter<T>(_ property: String, value: T, original: ((T) -> Void)? = nil) {
return call(setterName(property), parameters: value, original: original)
}
public func call<IN, OUT>(_ method: String, parameters: IN, original: ((IN) -> OUT)? = nil) -> OUT {
return try! callThrows(method, parameters: parameters, original: original)
}
public func callThrows<IN, OUT>(_ method: String, parameters: IN, original: ((IN) throws -> OUT)? = nil) throws -> OUT {
fileprivate func callThrowsInternal<IN, OUT>(_ method: String, parameters: IN, original: ((IN) throws -> OUT)? = nil) throws -> OUT {
let stubCall = ConcreteStubCall(method: method, parameters: parameters)
stubCalls.append(stubCall)
unverifiedStubCallsIndexes.append(stubCalls.count - 1)
@ -129,3 +121,101 @@ public class MockManager {
fatalError(message)
}
}
extension MockManager {
public func getter<T>(_ property: String, original: ((Void) -> T)? = nil) -> T {
return call(getterName(property), parameters: Void(), original: original)
}
public func setter<T>(_ property: String, value: T, original: ((T) -> Void)? = nil) {
return call(setterName(property), parameters: value, original: original)
}
}
// DSL helpers workarounding Swift 3's removal of parameter splat
extension MockManager {
public func call<IN, OUT>(_ method: String, parameters: IN, original: ((IN) -> OUT)? = nil) -> OUT {
return callInternal(method, parameters: parameters, original: original)
}
public func call<IN1, IN2, OUT>(_ method: String, parameters: (IN1, IN2), original: ((IN1, IN2) -> OUT)? = nil) -> OUT {
return callInternal(method, parameters: parameters, original: original)
}
public func call<IN1, IN2, IN3, OUT>(_ method: String, parameters: (IN1, IN2, IN3), original: ((IN1, IN2, IN3) -> OUT)? = nil) -> OUT {
return callInternal(method, parameters: parameters, original: original)
}
public func call<IN1, IN2, IN3, IN4, OUT>(_ method: String, parameters: (IN1, IN2, IN3, IN4), original: ((IN1, IN2, IN3, IN4) -> OUT)? = nil) -> OUT {
return callInternal(method, parameters: parameters, original: original)
}
public func call<IN1, IN2, IN3, IN4, IN5, OUT>(_ method: String, parameters: (IN1, IN2, IN3, IN4, IN5), original: ((IN1, IN2, IN3, IN4, IN5) -> OUT)? = nil) -> OUT {
return callInternal(method, parameters: parameters, original: original)
}
public func call<IN1, IN2, IN3, IN4, IN5, IN6, OUT>(_ method: String, parameters: (IN1, IN2, IN3, IN4, IN5, IN6), original: ((IN1, IN2, IN3, IN4, IN5, IN6) -> OUT)? = nil) -> OUT {
return callInternal(method, parameters: parameters, original: original)
}
public func call<IN1, IN2, IN3, IN4, IN5, IN6, IN7, OUT>(_ method: String, parameters: (IN1, IN2, IN3, IN4, IN5, IN6, IN7), original: ((IN1, IN2, IN3, IN4, IN5, IN6, IN7) -> OUT)? = nil) -> OUT {
return callInternal(method, parameters: parameters, original: original)
}
public func call<IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8, OUT>(_ method: String, parameters: (IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8), original: ((IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8) -> OUT)? = nil) -> OUT {
return callInternal(method, parameters: parameters, original: original)
}
}
extension MockManager {
public func callThrows<IN, OUT>(_ method: String, parameters: IN, original: ((IN) throws -> OUT)? = nil) throws -> OUT {
return try callThrowsInternal(method, parameters: parameters, original: original)
}
public func callThrows<IN1, IN2, OUT>(_ method: String, parameters: (IN1, IN2), original: ((IN1, IN2) throws -> OUT)? = nil) throws -> OUT {
return try callThrowsInternal(method, parameters: parameters, original: original)
}
public func callThrows<IN1, IN2, IN3, OUT>(_ method: String, parameters: (IN1, IN2, IN3), original: ((IN1, IN2, IN3) throws -> OUT)? = nil) throws -> OUT {
return try callThrowsInternal(method, parameters: parameters, original: original)
}
public func callThrows<IN1, IN2, IN3, IN4, OUT>(_ method: String, parameters: (IN1, IN2, IN3, IN4), original: ((IN1, IN2, IN3, IN4) throws -> OUT)? = nil) throws -> OUT {
return try callThrowsInternal(method, parameters: parameters, original: original)
}
public func callThrows<IN1, IN2, IN3, IN4, IN5, OUT>(_ method: String, parameters: (IN1, IN2, IN3, IN4, IN5), original: ((IN1, IN2, IN3, IN4, IN5) throws -> OUT)? = nil) throws -> OUT {
return try callThrowsInternal(method, parameters: parameters, original: original)
}
public func callThrows<IN1, IN2, IN3, IN4, IN5, IN6, OUT>(_ method: String, parameters: (IN1, IN2, IN3, IN4, IN5, IN6), original: ((IN1, IN2, IN3, IN4, IN5, IN6) throws -> OUT)? = nil) throws -> OUT {
return try callThrowsInternal(method, parameters: parameters, original: original)
}
public func callThrows<IN1, IN2, IN3, IN4, IN5, IN6, IN7, OUT>(_ method: String, parameters: (IN1, IN2, IN3, IN4, IN5, IN6, IN7), original: ((IN1, IN2, IN3, IN4, IN5, IN6, IN7) throws -> OUT)? = nil) throws -> OUT {
return try callThrowsInternal(method, parameters: parameters, original: original)
}
public func callThrows<IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8, OUT>(_ method: String, parameters: (IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8), original: ((IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8) throws -> OUT)? = nil) throws -> OUT {
return try callThrowsInternal(method, parameters: parameters, original: original)
}
}