Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 7d0e5a8

Browse files
committedDec 20, 2024·
Create DocCommentsTests.swift
1 parent a877509 commit 7d0e5a8

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
//
2+
// DocCommentsTests.swift
3+
//
4+
//
5+
// Created by Sagar Dagdu on 20/12/24.
6+
//
7+
8+
import XCTest
9+
import MacroTesting
10+
11+
final class DocCommentsTests: MockableMacroTestCase {
12+
func test_documentation_comments() {
13+
assertMacro {
14+
"""
15+
/// Protocol documentation
16+
/// Multiple lines
17+
@Mockable
18+
protocol Test {
19+
var foo: Int { get }
20+
}
21+
"""
22+
} expansion: {
23+
"""
24+
/// Protocol documentation
25+
/// Multiple lines
26+
protocol Test {
27+
var foo: Int { get }
28+
}
29+
30+
#if MOCKING
31+
/// Protocol documentation
32+
/// Multiple lines
33+
final class MockTest: Test, Mockable.MockableService {
34+
typealias Mocker = Mockable.Mocker<MockTest>
35+
private let mocker = Mocker()
36+
@available(*, deprecated, message: "Use given(_ service:) instead. ")
37+
nonisolated var given: ReturnBuilder {
38+
.init(mocker: mocker)
39+
}
40+
@available(*, deprecated, message: "Use when(_ service:) instead. ")
41+
nonisolated var when: ActionBuilder {
42+
.init(mocker: mocker)
43+
}
44+
@available(*, deprecated, message: "Use verify(_ service:) instead. ")
45+
nonisolated var verify: VerifyBuilder {
46+
.init(mocker: mocker)
47+
}
48+
nonisolated func reset(_ scopes: Set<Mockable.MockerScope> = .all) {
49+
mocker.reset(scopes: scopes)
50+
}
51+
nonisolated init(policy: Mockable.MockerPolicy? = nil) {
52+
if let policy {
53+
mocker.policy = policy
54+
}
55+
}
56+
var foo: Int {
57+
get {
58+
let member: Member = .m1_foo
59+
return mocker.mock(member) { producer in
60+
let producer = try cast(producer) as () -> Int
61+
return producer()
62+
}
63+
}
64+
}
65+
enum Member: Mockable.Matchable, Mockable.CaseIdentifiable, Sendable {
66+
case m1_foo
67+
func match(_ other: Member) -> Bool {
68+
switch (self, other) {
69+
case (.m1_foo, .m1_foo):
70+
return true
71+
}
72+
}
73+
}
74+
struct ReturnBuilder: Mockable.Builder {
75+
private let mocker: Mocker
76+
init(mocker: Mocker) {
77+
self.mocker = mocker
78+
}
79+
var foo: Mockable.FunctionReturnBuilder<MockTest, ReturnBuilder, Int, () -> Int> {
80+
.init(mocker, kind: .m1_foo)
81+
}
82+
}
83+
struct ActionBuilder: Mockable.Builder {
84+
private let mocker: Mocker
85+
init(mocker: Mocker) {
86+
self.mocker = mocker
87+
}
88+
var foo: Mockable.FunctionActionBuilder<MockTest, ActionBuilder> {
89+
.init(mocker, kind: .m1_foo)
90+
}
91+
}
92+
struct VerifyBuilder: Mockable.Builder {
93+
private let mocker: Mocker
94+
init(mocker: Mocker) {
95+
self.mocker = mocker
96+
}
97+
var foo: Mockable.FunctionVerifyBuilder<MockTest, VerifyBuilder> {
98+
.init(mocker, kind: .m1_foo)
99+
}
100+
}
101+
}
102+
#endif
103+
"""
104+
}
105+
}
106+
}

0 commit comments

Comments
 (0)
Please sign in to comment.