I have a generic type with two types. The generated mock for it seems to have reversed those types in some cases.
// MARK: - Mocked SectionViewModel
public final class SectionViewModelMock<Context, Row>: TableSide.SectionViewModel<Context, Row>, Mockingbird.Mock {
static var staticMock: Mockingbird.StaticMock {
let runtimeGenericTypeNames = ["\(Context.self)", "\(Row.self)"].joined(separator: ",")
let staticMockIdentifier = "SectionViewModelMock<Context, Row>," + runtimeGenericTypeNames
if let staticMock = genericTypesStaticMocks.value[staticMockIdentifier] { return staticMock }
let staticMock = Mockingbird.StaticMock()
genericTypesStaticMocks.update { $0[staticMockIdentifier] = staticMock }
return staticMock
}
public let mockingContext = Mockingbird.MockingContext()
public let stubbingContext = Mockingbird.StubbingContext()
public let mockMetadata = Mockingbird.MockMetadata(["generator_version": "0.7.0", "module_name": "TableSide"])
public var sourceLocation: Mockingbird.SourceLocation? {
get { return stubbingContext.sourceLocation }
set {
stubbingContext.sourceLocation = newValue
SectionViewModelMock.staticMock.stubbingContext.sourceLocation = newValue
}
}
public enum InitializerProxy {
public static func initialize(title: String, rows: [Row], context: Context?, __file: StaticString = #file, __line: UInt = #line) -> SectionViewModelMock<Context, Row> {
let mock: SectionViewModelMock<Context, Row> = SectionViewModelMock<Context, Row>(title: `title`, rows: `rows`, context: `context`)
mock.sourceLocation = SourceLocation(__file, __line)
return mock
}
}
// MARK: Mocked context
override public var `context`: Context? {
get {
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "context.get", arguments: [])
mockingContext.didInvoke(invocation)
return (stubbingContext.implementation(for: invocation) as! () -> Context?)()
}
set {
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "context.set", arguments: [ArgumentMatcher(newValue)])
mockingContext.didInvoke(invocation)
let implementation = stubbingContext.implementation(for: invocation, optional: true)
if let concreteImplementation = implementation as? (Context?) -> Void {
concreteImplementation(newValue)
} else {
(implementation as? () -> Void)?()
}
}
}
public func getContext() -> Mockingbird.Mockable<Mockingbird.VariableDeclaration, () -> Context?, Context?> {
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "context.get", arguments: [])
return Mockingbird.Mockable<Mockingbird.VariableDeclaration, () -> Context?, Context?>(mock: self, invocation: invocation)
}
public func setContext(_ newValue: @escaping @autoclosure () -> Context?) -> Mockingbird.Mockable<Mockingbird.VariableDeclaration, (Context?) -> Void, Void> {
let arguments: [Mockingbird.ArgumentMatcher] = [Mockingbird.resolve(newValue)]
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "context.set", arguments: arguments)
return Mockingbird.Mockable<Mockingbird.VariableDeclaration, (Context?) -> Void, Void>(mock: self, invocation: invocation)
}
// MARK: Mocked title
override public var `title`: String {
get {
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "title.get", arguments: [])
mockingContext.didInvoke(invocation)
return (stubbingContext.implementation(for: invocation) as! () -> String)()
}
set {
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "title.set", arguments: [ArgumentMatcher(newValue)])
mockingContext.didInvoke(invocation)
let implementation = stubbingContext.implementation(for: invocation, optional: true)
if let concreteImplementation = implementation as? (String) -> Void {
concreteImplementation(newValue)
} else {
(implementation as? () -> Void)?()
}
}
}
public func getTitle() -> Mockingbird.Mockable<Mockingbird.VariableDeclaration, () -> String, String> {
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "title.get", arguments: [])
return Mockingbird.Mockable<Mockingbird.VariableDeclaration, () -> String, String>(mock: self, invocation: invocation)
}
public func setTitle(_ newValue: @escaping @autoclosure () -> String) -> Mockingbird.Mockable<Mockingbird.VariableDeclaration, (String) -> Void, Void> {
let arguments: [Mockingbird.ArgumentMatcher] = [Mockingbird.resolve(newValue)]
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "title.set", arguments: arguments)
return Mockingbird.Mockable<Mockingbird.VariableDeclaration, (String) -> Void, Void>(mock: self, invocation: invocation)
}
// MARK: Mocked `add`(row: Row)
public override func `add`(row: Row) -> Void {
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "`add`(row: Row) -> Void", arguments: [Mockingbird.ArgumentMatcher(`row`)])
mockingContext.didInvoke(invocation)
let implementation = stubbingContext.implementation(for: invocation, optional: true)
if let concreteImplementation = implementation as? (Row) -> Void {
concreteImplementation(`row`)
} else {
(implementation as? () -> Void)?()
}
}
public func `add`(row: @escaping @autoclosure () -> Row) -> Mockingbird.Mockable<Mockingbird.MethodDeclaration, (Row) -> Void, Void> {
let arguments: [Mockingbird.ArgumentMatcher] = [Mockingbird.resolve(`row`)]
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "`add`(row: Row) -> Void", arguments: arguments)
return Mockingbird.Mockable<Mockingbird.MethodDeclaration, (Row) -> Void, Void>(mock: self, invocation: invocation)
}
// MARK: Mocked init(title: String, rows: [Row], context: Context?)
public required override init(title: String, rows: [Row], context: Context?) {
super.init(title: `title`, rows: `rows`, context: `context`)
Mockingbird.checkVersion(for: self)
let invocation: Mockingbird.Invocation = Mockingbird.Invocation(selectorName: "init(title: String, rows: [Row], context: Context?) ", arguments: [Mockingbird.ArgumentMatcher(`title`), Mockingbird.ArgumentMatcher(`rows`), Mockingbird.ArgumentMatcher(`context`)])
mockingContext.didInvoke(invocation)
}
}
/// Create a source-attributed `TableSide.SectionViewModel<Context, Row><Context, Row>` class mock metatype.
public func mock<Context, Row>(file: StaticString = #file, line: UInt = #line, _ type: SectionViewModelMock<Context, Row>.Type) -> SectionViewModelMock<Context, Row>.InitializerProxy.Type {
return SectionViewModelMock<Context, Row>.InitializerProxy.self
}