@@ -29,7 +29,7 @@ final class GetPreviousSuggestionTests: XCTestCase {
2929 completion (
3030 text: """
3131
32- struct Wolve {}
32+ struct Wolf {}
3333 """ ,
3434 range: . init(
3535 start: . init( line: 7 , character: 0 ) ,
@@ -38,69 +38,76 @@ final class GetPreviousSuggestionTests: XCTestCase {
3838 ) ,
3939 ]
4040
41- var content = """
42- struct Cat {}
41+ let lines = [
42+ " struct Cat {} \n " ,
43+ " \n " ,
44+ ]
4345
44- """
45-
4646 let result1 = try await service. getSuggestedCode ( editorContent: . init(
47- content: content ,
48- lines: content . breakLines ( ) ,
47+ content: lines . joined ( ) ,
48+ lines: lines ,
4949 uti: " " ,
5050 cursorPosition: . init( line: 0 , character: 0 ) ,
5151 tabSize: 1 ,
5252 indentSize: 1 ,
5353 usesTabsForIndentation: false
5454 ) )
55-
56- content = result1. content
5755
58- let result2 = try await service. getNextSuggestedCode ( editorContent: . init(
59- content: content,
60- lines: content. breakLines ( ) ,
56+ let result1Lines = lines. applying ( result1. modifications)
57+
58+ let result2 = try await service. getPreviousSuggestedCode ( editorContent: . init(
59+ content: result1Lines. joined ( ) ,
60+ lines: result1Lines,
6161 uti: " " ,
6262 cursorPosition: . init( line: 3 , character: 5 ) ,
6363 tabSize: 1 ,
6464 indentSize: 1 ,
6565 usesTabsForIndentation: false
6666 ) )
6767
68+ let result2Lines = result1Lines. applying ( result2. modifications)
69+
70+ XCTAssertEqual ( result2Lines. joined ( ) , result2. content)
6871 XCTAssertEqual ( result2. content, """
6972 struct Cat {}
73+
7074 /*========== Copilot Suggestion 2/2
7175
72- struct Wolve {}
76+ struct Wolf {}
7377 *///======== End of Copilot Suggestion
7478
7579 """ , " Previous suggestions should be removed. " )
7680
7781 XCTAssertEqual (
7882 result2. newCursor,
79- . init( line: 0 , character: 0 ) ,
83+ . init( line: 1 , character: 0 ) ,
8084 " The cursor was in the deleted suggestion, reset it to 1 line above the suggestion, set its col to 0 "
8185 )
82-
83- content = result2. content
84-
85- let result3 = try await service. getNextSuggestedCode ( editorContent: . init(
86- content: content,
87- lines: content. breakLines ( ) ,
86+
87+ let result3 = try await service. getPreviousSuggestedCode ( editorContent: . init(
88+ content: result2Lines. joined ( ) ,
89+ lines: result2Lines,
8890 uti: " " ,
8991 cursorPosition: . init( line: 0 , character: 3 ) ,
9092 tabSize: 1 ,
9193 indentSize: 1 ,
9294 usesTabsForIndentation: false
9395 ) )
94-
96+
97+ let result3Lines = lines. applying ( result3. modifications)
98+
99+ XCTAssertEqual ( result3. content, result3Lines. joined ( ) )
100+
95101 XCTAssertEqual ( result3. content, """
96102 struct Cat {}
103+
97104 /*========== Copilot Suggestion 1/2
98105
99106 struct Dog {}
100107 *///======== End of Copilot Suggestion
101108
102109 """ , " Cycling through the suggestions. " )
103110
104- XCTAssertEqual ( result3. newCursor, . init( line: 0 , character: 3 ) )
111+ XCTAssertEqual ( result3. newCursor, . init( line: 0 , character: 3 ) )
105112 }
106113}
0 commit comments