@@ -357,6 +357,52 @@ public override void Move(string sourceFileName, string destFileName)
357357 mockFileDataAccessor . RemoveFile ( sourceFileName ) ;
358358 }
359359
360+ #if FEATURE_FILE_MOVE_WITH_OVERWRITE
361+ public override void Move ( string sourceFileName , string destFileName , bool overwrite )
362+ {
363+ if ( sourceFileName == null )
364+ {
365+ throw CommonExceptions . FilenameCannotBeNull ( nameof ( sourceFileName ) ) ;
366+ }
367+
368+ if ( destFileName == null )
369+ {
370+ throw CommonExceptions . FilenameCannotBeNull ( nameof ( destFileName ) ) ;
371+ }
372+
373+ mockFileDataAccessor . PathVerifier . IsLegalAbsoluteOrRelative ( sourceFileName , nameof ( sourceFileName ) ) ;
374+ mockFileDataAccessor . PathVerifier . IsLegalAbsoluteOrRelative ( destFileName , nameof ( destFileName ) ) ;
375+
376+ if ( mockFileDataAccessor . GetFile ( destFileName ) != null )
377+ {
378+ if ( destFileName . Equals ( sourceFileName ) )
379+ {
380+ return ;
381+ }
382+ else if ( ! overwrite )
383+ {
384+ throw new IOException ( "A file can not be created if it already exists." ) ;
385+ }
386+ }
387+
388+
389+ var sourceFile = mockFileDataAccessor . GetFile ( sourceFileName ) ;
390+
391+ if ( sourceFile == null )
392+ {
393+ throw CommonExceptions . FileNotFound ( sourceFileName ) ;
394+ }
395+ if ( ! sourceFile . AllowedFileShare . HasFlag ( FileShare . Delete ) )
396+ {
397+ throw CommonExceptions . ProcessCannotAccessFileInUse ( ) ;
398+ }
399+ VerifyDirectoryExists ( destFileName ) ;
400+
401+ mockFileDataAccessor . AddFile ( destFileName , new MockFileData ( sourceFile ) ) ;
402+ mockFileDataAccessor . RemoveFile ( sourceFileName ) ;
403+ }
404+ #endif
405+
360406 public override Stream Open ( string path , FileMode mode )
361407 {
362408 mockFileDataAccessor . PathVerifier . IsLegalAbsoluteOrRelative ( path , "path" ) ;
0 commit comments