@@ -654,6 +654,82 @@ public async Task MockFileInfo_CopyTo_ThrowsExceptionIfSourceDoesNotExist()
654654 await That ( action ) . Throws < FileNotFoundException > ( ) ;
655655 }
656656
657+ [ Test ]
658+ public async Task MockFileInfo_CopyTo_ShouldPreserveMockFileDataFileVersionInfo ( )
659+ {
660+ string sourcePath = XFS . Path ( @"c:\temp\file.txt" ) ;
661+ string destinationPath = XFS . Path ( @"c:\temp\file2.txt" ) ;
662+ var fileVersionInfo = new MockFileVersionInfo (
663+ sourcePath ,
664+ fileVersion : "1.2.3.4" ,
665+ productVersion : "5.6.7-beta" ,
666+ fileDescription : "Demo file" ) ;
667+ var fileSystem = new MockFileSystem ( new Dictionary < string , MockFileData >
668+ {
669+ { sourcePath , new MockFileData ( "Demo text content" ) { FileVersionInfo = fileVersionInfo } }
670+ } ) ;
671+
672+ fileSystem . FileInfo . New ( sourcePath ) . CopyTo ( destinationPath ) ;
673+
674+ var copiedFileVersionInfo = fileSystem . FileVersionInfo . GetVersionInfo ( destinationPath ) ;
675+
676+ await That ( copiedFileVersionInfo ) . IsEqualTo ( fileVersionInfo ) ;
677+ await That ( copiedFileVersionInfo . FileVersion ) . IsEqualTo ( "1.2.3.4" ) ;
678+ await That ( copiedFileVersionInfo . ProductVersion ) . IsEqualTo ( "5.6.7-beta" ) ;
679+ await That ( copiedFileVersionInfo . FileDescription ) . IsEqualTo ( "Demo file" ) ;
680+ }
681+
682+ [ Test ]
683+ public async Task MockFileInfo_MoveTo_ShouldPreserveMockFileDataFileVersionInfo ( )
684+ {
685+ string sourcePath = XFS . Path ( @"c:\temp\file.txt" ) ;
686+ string destinationPath = XFS . Path ( @"c:\temp\file2.txt" ) ;
687+ var fileVersionInfo = new MockFileVersionInfo (
688+ sourcePath ,
689+ fileVersion : "1.2.3.4" ,
690+ productVersion : "5.6.7-beta" ,
691+ fileDescription : "Demo file" ) ;
692+ var fileSystem = new MockFileSystem ( new Dictionary < string , MockFileData >
693+ {
694+ { sourcePath , new MockFileData ( "Demo text content" ) { FileVersionInfo = fileVersionInfo } }
695+ } ) ;
696+
697+ fileSystem . FileInfo . New ( sourcePath ) . MoveTo ( destinationPath ) ;
698+
699+ var copiedFileVersionInfo = fileSystem . FileVersionInfo . GetVersionInfo ( destinationPath ) ;
700+
701+ await That ( copiedFileVersionInfo ) . IsEqualTo ( fileVersionInfo ) ;
702+ await That ( copiedFileVersionInfo . FileVersion ) . IsEqualTo ( "1.2.3.4" ) ;
703+ await That ( copiedFileVersionInfo . ProductVersion ) . IsEqualTo ( "5.6.7-beta" ) ;
704+ await That ( copiedFileVersionInfo . FileDescription ) . IsEqualTo ( "Demo file" ) ;
705+ }
706+
707+ [ Test ]
708+ public async Task MockFileInfo_Replace_ShouldPreserveMockFileDataFileVersionInfo ( )
709+ {
710+ string sourcePath = XFS . Path ( @"c:\temp\file.txt" ) ;
711+ string destinationPath = XFS . Path ( @"c:\temp\file2.txt" ) ;
712+ var fileVersionInfo = new MockFileVersionInfo (
713+ sourcePath ,
714+ fileVersion : "1.2.3.4" ,
715+ productVersion : "5.6.7-beta" ,
716+ fileDescription : "Demo file" ) ;
717+ var fileSystem = new MockFileSystem ( new Dictionary < string , MockFileData >
718+ {
719+ { sourcePath , new MockFileData ( "Demo text content" ) { FileVersionInfo = fileVersionInfo } } ,
720+ { destinationPath , new MockFileData ( "Demo2 text content" ) }
721+ } ) ;
722+
723+ fileSystem . FileInfo . New ( sourcePath ) . Replace ( destinationPath , null ) ;
724+
725+ var copiedFileVersionInfo = fileSystem . FileVersionInfo . GetVersionInfo ( destinationPath ) ;
726+
727+ await That ( copiedFileVersionInfo ) . IsEqualTo ( fileVersionInfo ) ;
728+ await That ( copiedFileVersionInfo . FileVersion ) . IsEqualTo ( "1.2.3.4" ) ;
729+ await That ( copiedFileVersionInfo . ProductVersion ) . IsEqualTo ( "5.6.7-beta" ) ;
730+ await That ( copiedFileVersionInfo . FileDescription ) . IsEqualTo ( "Demo file" ) ;
731+ }
732+
657733 [ TestCase ( @"..\..\..\c.txt" ) ]
658734 [ TestCase ( @"c:\a\b\c.txt" ) ]
659735 [ TestCase ( @"c:\a\c.txt" ) ]
0 commit comments