@@ -451,6 +451,12 @@ namespace FourSlash {
451451 this . selectionEnd = end . position ;
452452 }
453453
454+ public selectAllInFile ( fileName : string ) {
455+ this . openFile ( fileName ) ;
456+ this . goToPosition ( 0 ) ;
457+ this . selectionEnd = this . activeFile . content . length ;
458+ }
459+
454460 public selectRange ( range : Range ) : void {
455461 this . goToRangeStart ( range ) ;
456462 this . selectionEnd = range . end ;
@@ -3090,32 +3096,44 @@ Actual: ${stringify(fullActual)}`);
30903096 this . applyEdits ( edit . fileName , edit . textChanges , /*isFormattingEdit*/ false ) ;
30913097 }
30923098
3093- const { renamePosition, newContent } = parseNewContent ( ) ;
3099+ let renameFilename : string | undefined ;
3100+ let renamePosition : number | undefined ;
3101+
3102+ const newFileContents = typeof newContentWithRenameMarker === "string" ? { [ this . activeFile . fileName ] : newContentWithRenameMarker } : newContentWithRenameMarker ;
3103+ for ( const fileName in newFileContents ) {
3104+ const { renamePosition : rp , newContent } = TestState . parseNewContent ( newFileContents [ fileName ] ) ;
3105+ if ( renamePosition === undefined ) {
3106+ renameFilename = fileName ;
3107+ renamePosition = rp ;
3108+ }
3109+ else {
3110+ ts . Debug . assert ( rp === undefined ) ;
3111+ }
3112+ this . verifyFileContent ( fileName , newContent ) ;
30943113
3095- this . verifyCurrentFileContent ( newContent ) ;
3114+ }
30963115
30973116 if ( renamePosition === undefined ) {
30983117 if ( editInfo . renameLocation !== undefined ) {
30993118 this . raiseError ( `Did not expect a rename location, got ${ editInfo . renameLocation } ` ) ;
31003119 }
31013120 }
31023121 else {
3103- // TODO: test editInfo.renameFilename value
3104- assert . isDefined ( editInfo . renameFilename ) ;
3122+ this . assertObjectsEqual ( editInfo . renameFilename , renameFilename ) ;
31053123 if ( renamePosition !== editInfo . renameLocation ) {
31063124 this . raiseError ( `Expected rename position of ${ renamePosition } , but got ${ editInfo . renameLocation } ` ) ;
31073125 }
31083126 }
3127+ }
31093128
3110- function parseNewContent ( ) : { renamePosition : number | undefined , newContent : string } {
3111- const renamePosition = newContentWithRenameMarker . indexOf ( "/*RENAME*/" ) ;
3112- if ( renamePosition === - 1 ) {
3113- return { renamePosition : undefined , newContent : newContentWithRenameMarker } ;
3114- }
3115- else {
3116- const newContent = newContentWithRenameMarker . slice ( 0 , renamePosition ) + newContentWithRenameMarker . slice ( renamePosition + "/*RENAME*/" . length ) ;
3117- return { renamePosition, newContent } ;
3118- }
3129+ private static parseNewContent ( newContentWithRenameMarker : string ) : { readonly renamePosition : number | undefined , readonly newContent : string } {
3130+ const renamePosition = newContentWithRenameMarker . indexOf ( "/*RENAME*/" ) ;
3131+ if ( renamePosition === - 1 ) {
3132+ return { renamePosition : undefined , newContent : newContentWithRenameMarker } ;
3133+ }
3134+ else {
3135+ const newContent = newContentWithRenameMarker . slice ( 0 , renamePosition ) + newContentWithRenameMarker . slice ( renamePosition + "/*RENAME*/" . length ) ;
3136+ return { renamePosition, newContent } ;
31193137 }
31203138 }
31213139
@@ -3966,6 +3984,10 @@ namespace FourSlashInterface {
39663984 this . state . select ( startMarker , endMarker ) ;
39673985 }
39683986
3987+ public selectAllInFile ( fileName : string ) {
3988+ this . state . selectAllInFile ( fileName ) ;
3989+ }
3990+
39693991 public selectRange ( range : FourSlash . Range ) : void {
39703992 this . state . selectRange ( range ) ;
39713993 }
@@ -4736,7 +4758,7 @@ namespace FourSlashInterface {
47364758 refactorName : string ;
47374759 actionName : string ;
47384760 actionDescription : string ;
4739- newContent : string ;
4761+ newContent : NewFileContent ;
47404762 }
47414763
47424764 export type ExpectedCompletionEntry = string | {
@@ -4798,9 +4820,11 @@ namespace FourSlashInterface {
47984820 filesToSearch ?: ReadonlyArray < string > ;
47994821 }
48004822
4823+ export type NewFileContent = string | { readonly [ filename : string ] : string } ;
4824+
48014825 export interface NewContentOptions {
48024826 // Exactly one of these should be defined.
4803- newFileContent ?: string | { readonly [ filename : string ] : string } ;
4827+ newFileContent ?: NewFileContent ;
48044828 newRangeContent ?: string ;
48054829 }
48064830
0 commit comments