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
118 lines (95 loc) · 3.34 KB
/
CommentBase_RealtimeSuggestionTests.swift
File metadata and controls
118 lines (95 loc) · 3.34 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
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),
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),
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)
}
}