@@ -34,6 +34,33 @@ class PostProcessingSuggestionServiceMiddlewareTests: XCTestCase {
3434 relevantCodeSnippets: [ ]
3535 )
3636 }
37+
38+ func test_empty( ) async throws {
39+ let middleware = PostProcessingSuggestionServiceMiddleware ( )
40+
41+ let handler : PostProcessingSuggestionServiceMiddleware . Next = { _ in
42+ [
43+ . init(
44+ id: " 1 " ,
45+ text: " " ,
46+ position: . init( line: 0 , character: 0 ) ,
47+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 0 ) )
48+ ) ,
49+ ]
50+ }
51+
52+ let suggestions = try await middleware. getSuggestion (
53+ createRequest ( " " , . init( line: 0 , character: 0 ) ) ,
54+ configuration: . init(
55+ acceptsRelevantCodeSnippets: true ,
56+ mixRelevantCodeSnippetsInSource: true ,
57+ acceptsRelevantSnippetsFromOpenedFiles: true
58+ ) ,
59+ next: handler
60+ )
61+
62+ XCTAssertEqual ( suggestions, [ ] )
63+ }
3764
3865 func test_trailing_whitespaces_and_new_lines_should_be_removed( ) async throws {
3966 let middleware = PostProcessingSuggestionServiceMiddleware ( )
@@ -184,5 +211,175 @@ class PostProcessingSuggestionServiceMiddlewareTests: XCTestCase {
184211 ) ,
185212 ] )
186213 }
214+
215+ func test_remove_duplicated_trailing_closing_parenthesis_single_parenthesis( ) async throws {
216+ let middleware = PostProcessingSuggestionServiceMiddleware ( )
217+
218+ let handler : PostProcessingSuggestionServiceMiddleware . Next = { _ in
219+ [
220+ . init(
221+ id: " 1 " ,
222+ text: " hello world \n } " ,
223+ position: . init( line: 0 , character: 1 ) ,
224+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 1 ) )
225+ ) ,
226+ ]
227+ }
228+
229+ let suggestions = try await middleware. getSuggestion (
230+ createRequest ( " h \n } \n " , . init( line: 0 , character: 1 ) ) ,
231+ configuration: . init(
232+ acceptsRelevantCodeSnippets: true ,
233+ mixRelevantCodeSnippetsInSource: true ,
234+ acceptsRelevantSnippetsFromOpenedFiles: true
235+ ) ,
236+ next: handler
237+ )
238+
239+ XCTAssertEqual ( suggestions, [
240+ . init(
241+ id: " 1 " ,
242+ text: " hello world " ,
243+ position: . init( line: 0 , character: 1 ) ,
244+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 1 ) )
245+ ) ,
246+ ] )
247+ }
248+
249+ func test_remove_duplicated_trailing_closing_parenthesis_single_line( ) async throws {
250+ let middleware = PostProcessingSuggestionServiceMiddleware ( )
251+
252+ let handler : PostProcessingSuggestionServiceMiddleware . Next = { _ in
253+ [
254+ . init(
255+ id: " 1 " ,
256+ text: " } " ,
257+ position: . init( line: 0 , character: 0 ) ,
258+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 0 ) )
259+ ) ,
260+ ]
261+ }
262+
263+ let suggestions = try await middleware. getSuggestion (
264+ createRequest ( " \n } \n " , . init( line: 0 , character: 0 ) ) ,
265+ configuration: . init(
266+ acceptsRelevantCodeSnippets: true ,
267+ mixRelevantCodeSnippetsInSource: true ,
268+ acceptsRelevantSnippetsFromOpenedFiles: true
269+ ) ,
270+ next: handler
271+ )
272+
273+ XCTAssertEqual ( suggestions, [
274+ . init(
275+ id: " 1 " ,
276+ text: " " ,
277+ position: . init( line: 0 , character: 0 ) ,
278+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 0 ) )
279+ ) ,
280+ ] )
281+ }
282+
283+ func test_remove_duplicated_trailing_closing_parenthesis_leading_space( ) async throws {
284+ let middleware = PostProcessingSuggestionServiceMiddleware ( )
285+
286+ let handler : PostProcessingSuggestionServiceMiddleware . Next = { _ in
287+ [
288+ . init(
289+ id: " 1 " ,
290+ text: " hello world \n } " ,
291+ position: . init( line: 0 , character: 1 ) ,
292+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 1 ) )
293+ ) ,
294+ ]
295+ }
296+
297+ let suggestions = try await middleware. getSuggestion (
298+ createRequest ( " h \n } \n " , . init( line: 0 , character: 1 ) ) ,
299+ configuration: . init(
300+ acceptsRelevantCodeSnippets: true ,
301+ mixRelevantCodeSnippetsInSource: true ,
302+ acceptsRelevantSnippetsFromOpenedFiles: true
303+ ) ,
304+ next: handler
305+ )
306+
307+ XCTAssertEqual ( suggestions, [
308+ . init(
309+ id: " 1 " ,
310+ text: " hello world " ,
311+ position: . init( line: 0 , character: 1 ) ,
312+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 1 ) )
313+ ) ,
314+ ] )
315+ }
316+
317+ func test_remove_duplicated_trailing_closing_parenthesis_commas( ) async throws {
318+ let middleware = PostProcessingSuggestionServiceMiddleware ( )
319+
320+ let handler : PostProcessingSuggestionServiceMiddleware . Next = { _ in
321+ [
322+ . init(
323+ id: " 1 " ,
324+ text: " hello world \n ,}, " ,
325+ position: . init( line: 0 , character: 1 ) ,
326+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 1 ) )
327+ ) ,
328+ ]
329+ }
330+
331+ let suggestions = try await middleware. getSuggestion (
332+ createRequest ( " h \n ,}, \n " , . init( line: 0 , character: 1 ) ) ,
333+ configuration: . init(
334+ acceptsRelevantCodeSnippets: true ,
335+ mixRelevantCodeSnippetsInSource: true ,
336+ acceptsRelevantSnippetsFromOpenedFiles: true
337+ ) ,
338+ next: handler
339+ )
340+
341+ XCTAssertEqual ( suggestions, [
342+ . init(
343+ id: " 1 " ,
344+ text: " hello world " ,
345+ position: . init( line: 0 , character: 1 ) ,
346+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 1 ) )
347+ ) ,
348+ ] )
349+ }
350+
351+ func test_remove_duplicated_trailing_closing_parenthesis_multiple_parenthesis( ) async throws {
352+ let middleware = PostProcessingSuggestionServiceMiddleware ( )
353+
354+ let handler : PostProcessingSuggestionServiceMiddleware . Next = { _ in
355+ [
356+ . init(
357+ id: " 1 " ,
358+ text: " hello world \n }))>}} " ,
359+ position: . init( line: 0 , character: 1 ) ,
360+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 1 ) )
361+ ) ,
362+ ]
363+ }
364+
365+ let suggestions = try await middleware. getSuggestion (
366+ createRequest ( " h \n }))>}} \n " , . init( line: 0 , character: 1 ) ) ,
367+ configuration: . init(
368+ acceptsRelevantCodeSnippets: true ,
369+ mixRelevantCodeSnippetsInSource: true ,
370+ acceptsRelevantSnippetsFromOpenedFiles: true
371+ ) ,
372+ next: handler
373+ )
374+
375+ XCTAssertEqual ( suggestions, [
376+ . init(
377+ id: " 1 " ,
378+ text: " hello world " ,
379+ position: . init( line: 0 , character: 1 ) ,
380+ range: . init( startPair: ( 0 , 0 ) , endPair: ( 0 , 1 ) )
381+ ) ,
382+ ] )
383+ }
187384}
188385
0 commit comments