Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Organize the arguments of Model.render. #272

Merged
merged 10 commits into from
Nov 12, 2024
Prev Previous commit
Next Next commit
Add test case about known issue
  • Loading branch information
sidepelican committed Nov 6, 2024
commit de68c4c1c62616de9f36b0cbbe210476207e6d52
36 changes: 36 additions & 0 deletions Tests/TestMacros/FixtureMacro.swift
Original file line number Diff line number Diff line change
Expand Up @@ -270,3 +270,39 @@ class PresentableListenerMock: PresentableListener {
}

"""

let macroInFuncWithOverload = """
/// \(String.mockAnnotation)
protocol PresentableListener: AnyObject {
#if DEBUG
func run(value: Int)
func run(value: String)
#endif
}
"""

let macroInFuncWithOverloadMock = """
class PresentableListenerMock: PresentableListener {
init() { }
#if DEBUG
private(set) var runCallCount = 0
var runHandler: ((Int) -> ())?
func run(value: Int) {
runCallCount += 1
if let runHandler = runHandler {
runHandler(value)
}

}
private(set) var runValueCallCount = 0
var runValueHandler: ((String) -> ())?
func run(value: String) {
runValueCallCount += 1
if let runValueHandler = runValueHandler {
runValueHandler(value)
}

}
#endif
}
"""
39 changes: 23 additions & 16 deletions Tests/TestMacros/MacroTests.swift
Original file line number Diff line number Diff line change
@@ -1,35 +1,42 @@
import Foundation
import XCTest

class MacroTests: MockoloTestCase {
func testMacroInFunc() {
final class MacroTests: MockoloTestCase {
func testMacroInFunc() {
verify(srcContent: macroInFunc,
dstContent: macroInFuncMock)
}

func testMacroInFuncWithOverload() {
XCTExpectFailure("Resolving overloading in #if is broken.") {
verify(srcContent: macroInFuncWithOverload,
dstContent: macroInFuncWithOverloadMock)
}
}

func testMacroImports() {
verify(srcContent: macroImports,
dstContent: macroImportsMock)
verify(srcContent: macroImports,
dstContent: macroImportsMock)
}

func testMacroImportsWithOtherMacro() {
verify(srcContent: macroImports,
mockContent: parentMock,
dstContent: macroImportsWithParentMock)
verify(srcContent: macroImports,
mockContent: parentMock,
dstContent: macroImportsWithParentMock)
}

func testInheritedMacroImports() {
verify(srcContent: macroImports,
mockContent: parentWithMacroMock,
dstContent: inheritedMacroImportsMock)
verify(srcContent: macroImports,
mockContent: parentWithMacroMock,
dstContent: inheritedMacroImportsMock)
}

func testIfElseMacroImports() {
verify(srcContent: ifElseMacroImports,
dstContent: ifElseMacroImportsMock)
verify(srcContent: ifElseMacroImports,
dstContent: ifElseMacroImportsMock)
}

func testNestedMacroImports() {
verify(srcContent: nestedMacroImports,
dstContent: nestedMacroImportsMock)
verify(srcContent: nestedMacroImports,
dstContent: nestedMacroImportsMock)
}
}