forked from intitni/CopilotForXcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommentBase_RealtimeSuggestionTests.swift
More file actions
120 lines (97 loc) · 3.4 KB
/
CommentBase_RealtimeSuggestionTests.swift
File metadata and controls
120 lines (97 loc) · 3.4 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
119
120
import CopilotModel
import CopilotService
import Environment
import XCTest
import XPCShared
@testable import Service
@testable import SuggestionInjector
final class CommentBase_RealtimeSuggestionsTests: XCTestCase {
let mock = MockSuggestionService(completions: [])
override func setUp() async throws {
await clearEnvironment()
Environment.createSuggestionService = { [unowned self] _ in self.mock }
Environment.triggerAction = { _ in fatalError("unimplemented") }
}
func test_after_prefetch_suggestions_completes_it_should_trigger_command_real_time_suggestions___if_editor_content_is_unchanged_present_the_suggestions(
) 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 editor = EditorContent(
content: lines.joined(),
lines: lines,
uti: "",
cursorPosition: .init(line: 0, character: 17),
selections: [],
tabSize: 1,
indentSize: 1,
usesTabsForIndentation: false
)
var triggeredCommand = ""
Environment.triggerAction = { triggeredCommand = $0 }
_ = try await service.generateRealtimeSuggestions(editor: editor)
XCTAssertEqual(triggeredCommand, "Real-time Suggestions")
let result = try await service.presentRealtimeSuggestions(editor: editor)!
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_if_content_is_changed_no_suggestions_will_be_presented() 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",
]
var editor = EditorContent(
content: lines.joined(),
lines: lines,
uti: "",
cursorPosition: .init(line: 0, character: 17),
selections: [],
tabSize: 1,
indentSize: 1,
usesTabsForIndentation: false
)
Environment.triggerAction = { _ in }
_ = try await service.generateRealtimeSuggestions(editor: editor)
editor.cursorPosition = .init(line: 1, character: 17)
let result = try await service.presentRealtimeSuggestions(editor: editor)
XCTAssertNil(result)
}
}