forked from intitni/CopilotForXcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommentBase_GetSuggestionsTests.swift
More file actions
118 lines (96 loc) · 3.22 KB
/
CommentBase_GetSuggestionsTests.swift
File metadata and controls
118 lines (96 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import CopilotModel
import CopilotService
import Environment
import XCTest
@testable import Service
@testable import SuggestionInjector
final class CommentBase_GetSuggestionsTests: XCTestCase {
let mock = MockSuggestionService(completions: [])
override func setUp() async throws {
await clearEnvironment()
Environment.createSuggestionService = { [unowned self] _ in self.mock }
}
func test_suggestion_should_be_corretly_included_in_code() async throws {
let service = CommentBaseCommandHandler()
mock.completions = [
completion(
text: """
var name: String
var age: String
""",
range: .init(
start: .init(line: 1, character: 0),
end: .init(line: 2, character: 18)
)
),
]
let lines = [
"struct Cat {\n",
"\n",
"}\n",
]
let result = try await service.presentSuggestions(editor: .init(
content: lines.joined(),
lines: lines,
uti: "",
cursorPosition: .init(line: 0, character: 17),
tabSize: 1,
indentSize: 1,
usesTabsForIndentation: false
))!
let resultLines = lines.applying(result.modifications)
XCTAssertEqual(resultLines.joined(), result.content)
XCTAssertEqual(result.content, """
struct Cat {
/*========== Copilot Suggestion 1/1
var name: String
var age: String
*///======== End of Copilot Suggestion
}
""")
XCTAssertEqual(result.newCursor, .init(line: 0, character: 17))
}
func test_get_new_suggestions_without_rejecting_previous_suggestions() async throws {
let service = CommentBaseCommandHandler()
mock.completions = [
completion(
text: """
struct Dog {}
""",
range: .init(
start: .init(line: 7, character: 0),
end: .init(line: 7, character: 12)
)
),
]
let lines = [
"struct Cat {\n",
"\n",
"/*========== Copilot Suggestion 1/1\n",
" var name: String\n",
" var age: String\n",
"*///======== End of Copilot Suggestion\n",
"}\n",
"\n",
]
let result = try await service.presentSuggestions(editor: .init(
content: lines.joined(),
lines: lines,
uti: "",
cursorPosition: .init(line: 6, character: 1),
tabSize: 1,
indentSize: 1,
usesTabsForIndentation: false
))!
let resultLines = lines.applying(result.modifications)
XCTAssertEqual(resultLines.joined(), result.content)
XCTAssertEqual(result.content, """
struct Cat {
}
/*========== Copilot Suggestion 1/1
struct Dog {}
*///======== End of Copilot Suggestion
""", "Previous suggestions should be removed.")
XCTAssertEqual(result.newCursor, .init(line: 2, character: 1))
}
}