forked from intitni/CopilotForXcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommentBase_AcceptSuggestionTests.swift
More file actions
87 lines (71 loc) · 2.45 KB
/
CommentBase_AcceptSuggestionTests.swift
File metadata and controls
87 lines (71 loc) · 2.45 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
import CopilotModel
import CopilotService
import Environment
import XCTest
@testable import Service
@testable import SuggestionInjector
final class CommentBase_AcceptSuggestionTests: XCTestCase {
let mock = MockSuggestionService(completions: [])
override func setUp() async throws {
await clearEnvironment()
Environment.createSuggestionService = { [unowned self] _ in self.mock }
}
func test_accept_suggestion_and_clear_all_sugguestions() async throws {
let service = CommentBaseCommandHandler()
mock.completions = [
completion(
text: """
struct Dog {}
""",
range: .init(
start: .init(line: 1, character: 0),
end: .init(line: 1, character: 12)
)
),
]
let lines = [
"struct Cat {}\n",
"\n",
]
let result1 = try await service.presentSuggestions(editor: .init(
content: lines.joined(),
lines: lines,
uti: "",
cursorPosition: .init(line: 0, character: 0),
tabSize: 1,
indentSize: 1,
usesTabsForIndentation: false
))!
let result1Lines = lines.applying(result1.modifications)
let result2 = try await service.acceptSuggestion(editor: .init(
content: result1Lines.joined(),
lines: result1Lines,
uti: "",
cursorPosition: .init(line: 3, character: 5),
tabSize: 1,
indentSize: 1,
usesTabsForIndentation: false
))!
let result2Lines = result1Lines.applying(result2.modifications)
XCTAssertEqual(result2Lines.joined(), result2.content)
XCTAssertEqual(result2.content, """
struct Cat {}
struct Dog {}
""", "Previous suggestions should be removed.")
XCTAssertEqual(
result2.newCursor,
.init(line: 2, character: 13),
"Move cursor to the end of suggestion"
)
let result3 = try await service.acceptSuggestion(editor: .init(
content: lines.joined(),
lines: lines,
uti: "",
cursorPosition: .init(line: 0, character: 3),
tabSize: 1,
indentSize: 1,
usesTabsForIndentation: false
))
XCTAssertNil(result3, "Deleting the code and accept again does nothing")
}
}