@@ -244,29 +244,51 @@ suite('ExtHostLanguageFeatureCommands', function() {
244244 provideCompletionItems ( doc , pos ) : any {
245245 let a = new types . CompletionItem ( 'item1' ) ;
246246 let b = new types . CompletionItem ( 'item2' ) ;
247- b . textEdit = types . TextEdit . replace ( new types . Range ( 0 , 0 , 0 , 4 ) , 'foo' ) ;
248- return [ a , b ] ;
247+ b . textEdit = types . TextEdit . replace ( new types . Range ( 0 , 4 , 0 , 8 ) , 'foo' ) ; // overwite after
248+ let c = new types . CompletionItem ( 'item3' ) ;
249+ c . textEdit = types . TextEdit . replace ( new types . Range ( 0 , 1 , 0 , 6 ) , 'foobar' ) ; // overwite before & after
250+ let d = new types . CompletionItem ( 'item4' ) ;
251+ d . textEdit = types . TextEdit . replace ( new types . Range ( 0 , 1 , 0 , 4 ) , '' ) ; // overwite before
252+ return [ a , b , c , d ] ;
249253 }
250254 } , [ ] ) ) ;
251255
252256 threadService . sync ( ) . then ( ( ) => {
253- commands . executeCommand < vscode . CompletionItem [ ] > ( 'vscode.executeCompletionItemProvider' , model . getAssociatedResource ( ) , new types . Position ( 0 , 0 ) ) . then ( values => {
254- assert . equal ( values . length , 2 ) ;
255- let [ first , second ] = values ;
256- assert . equal ( first . label , 'item1' ) ;
257- assert . equal ( first . textEdit . newText , 'item1' ) ;
258- assert . equal ( first . textEdit . range . start . line , 0 ) ;
259- assert . equal ( first . textEdit . range . start . character , 0 ) ;
260- assert . equal ( first . textEdit . range . end . line , 0 ) ;
261- assert . equal ( first . textEdit . range . end . character , 0 ) ;
262-
263- assert . equal ( second . label , 'item2' ) ;
264- assert . equal ( second . textEdit . newText , 'foo' ) ;
265- assert . equal ( second . textEdit . range . start . line , 0 ) ;
266- assert . equal ( second . textEdit . range . start . character , 0 ) ;
267- assert . equal ( second . textEdit . range . end . line , 0 ) ;
268- assert . equal ( second . textEdit . range . end . character , 4 ) ;
269- done ( ) ;
257+ commands . executeCommand < vscode . CompletionItem [ ] > ( 'vscode.executeCompletionItemProvider' , model . getAssociatedResource ( ) , new types . Position ( 0 , 4 ) ) . then ( values => {
258+ try {
259+ assert . equal ( values . length , 4 ) ;
260+ let [ first , second , third , forth ] = values ;
261+ assert . equal ( first . label , 'item1' ) ;
262+ assert . equal ( first . textEdit . newText , 'item1' ) ;
263+ assert . equal ( first . textEdit . range . start . line , 0 ) ;
264+ assert . equal ( first . textEdit . range . start . character , 0 ) ;
265+ assert . equal ( first . textEdit . range . end . line , 0 ) ;
266+ assert . equal ( first . textEdit . range . end . character , 4 ) ;
267+
268+ assert . equal ( second . label , 'item2' ) ;
269+ assert . equal ( second . textEdit . newText , 'foo' ) ;
270+ assert . equal ( second . textEdit . range . start . line , 0 ) ;
271+ assert . equal ( second . textEdit . range . start . character , 4 ) ;
272+ assert . equal ( second . textEdit . range . end . line , 0 ) ;
273+ assert . equal ( second . textEdit . range . end . character , 8 ) ;
274+
275+ assert . equal ( third . label , 'item3' ) ;
276+ assert . equal ( third . textEdit . newText , 'foobar' ) ;
277+ assert . equal ( third . textEdit . range . start . line , 0 ) ;
278+ assert . equal ( third . textEdit . range . start . character , 1 ) ;
279+ assert . equal ( third . textEdit . range . end . line , 0 ) ;
280+ assert . equal ( third . textEdit . range . end . character , 6 ) ;
281+
282+ assert . equal ( forth . label , 'item4' ) ;
283+ assert . equal ( forth . textEdit . newText , '' ) ;
284+ assert . equal ( forth . textEdit . range . start . line , 0 ) ;
285+ assert . equal ( forth . textEdit . range . start . character , 1 ) ;
286+ assert . equal ( forth . textEdit . range . end . line , 0 ) ;
287+ assert . equal ( forth . textEdit . range . end . character , 4 ) ;
288+ done ( ) ;
289+ } catch ( e ) {
290+ done ( e ) ;
291+ }
270292 } ) ;
271293 } ) ;
272294 } ) ;
0 commit comments