@@ -57,12 +57,13 @@ public override void AppendAllText(string path, string contents, Encoding encodi
5757 if ( ! mockFileDataAccessor . FileExists ( path ) )
5858 {
5959 VerifyDirectoryExists ( path ) ;
60- mockFileDataAccessor . AddFile ( path , new MockFileData ( contents , encoding ) ) ;
60+ mockFileDataAccessor . AddFile ( path , mockFileDataAccessor . AdjustTimes ( new MockFileData ( contents , encoding ) , TimeAdjustments . All ) ) ;
6161 }
6262 else
6363 {
6464 var file = mockFileDataAccessor . GetFile ( path ) ;
6565 file . CheckFileAccess ( path , FileAccess . Write ) ;
66+ mockFileDataAccessor . AdjustTimes ( file , TimeAdjustments . LastAccessTime | TimeAdjustments . LastWriteTime ) ;
6667 var bytesToAppend = encoding . GetBytes ( contents ) ;
6768 file . Contents = file . Contents . Concat ( bytesToAppend ) . ToArray ( ) ;
6869 }
@@ -126,7 +127,7 @@ public override void Copy(string sourceFileName, string destFileName, bool overw
126127 var sourceFileData = mockFileDataAccessor . GetFile ( sourceFileName ) ;
127128 sourceFileData . CheckFileAccess ( sourceFileName , FileAccess . Read ) ;
128129 var destFileData = new MockFileData ( sourceFileData ) ;
129- destFileData . CreationTime = destFileData . LastAccessTime = DateTime . Now ;
130+ mockFileDataAccessor . AdjustTimes ( destFileData , TimeAdjustments . CreationTime | TimeAdjustments . LastAccessTime ) ;
130131 mockFileDataAccessor . AddFile ( destFileName , destFileData ) ;
131132 }
132133
@@ -153,6 +154,7 @@ private Stream CreateInternal(string path, FileAccess access, FileOptions option
153154 VerifyDirectoryExists ( path ) ;
154155
155156 var mockFileData = new MockFileData ( new byte [ 0 ] ) ;
157+ mockFileDataAccessor . AdjustTimes ( mockFileData , TimeAdjustments . All ) ;
156158 mockFileDataAccessor . AddFile ( path , mockFileData ) ;
157159 return OpenInternal ( path , FileMode . Open , access , options ) ;
158160 }
@@ -396,8 +398,8 @@ public override void Move(string sourceFileName, string destFileName)
396398 throw CommonExceptions . ProcessCannotAccessFileInUse ( ) ;
397399 }
398400 VerifyDirectoryExists ( destFileName ) ;
399-
400- mockFileDataAccessor . AddFile ( destFileName , new MockFileData ( sourceFile ) ) ;
401+
402+ mockFileDataAccessor . AddFile ( destFileName , mockFileDataAccessor . AdjustTimes ( new MockFileData ( sourceFile ) , TimeAdjustments . LastAccessTime ) ) ;
401403 mockFileDataAccessor . RemoveFile ( sourceFileName ) ;
402404 }
403405
@@ -443,7 +445,7 @@ public override void Move(string sourceFileName, string destFileName, bool overw
443445 }
444446 VerifyDirectoryExists ( destFileName ) ;
445447
446- mockFileDataAccessor . AddFile ( destFileName , new MockFileData ( sourceFile ) ) ;
448+ mockFileDataAccessor . AddFile ( destFileName , mockFileDataAccessor . AdjustTimes ( new MockFileData ( sourceFile ) , TimeAdjustments . LastAccessTime ) ) ;
447449 mockFileDataAccessor . RemoveFile ( sourceFileName ) ;
448450 }
449451#endif
@@ -501,6 +503,12 @@ private Stream OpenInternal(
501503
502504 var mockFileData = mockFileDataAccessor . GetFile ( path ) ;
503505 mockFileData . CheckFileAccess ( path , access ) ;
506+ var timeAdjustments = TimeAdjustments . LastAccessTime ;
507+ if ( access != FileAccess . Read )
508+ {
509+ timeAdjustments |= TimeAdjustments . LastWriteTime ;
510+ }
511+ mockFileDataAccessor . AdjustTimes ( mockFileData , timeAdjustments ) ;
504512
505513 return new MockFileStream ( mockFileDataAccessor , path , mode , access , options ) ;
506514 }
@@ -540,7 +548,9 @@ public override byte[] ReadAllBytes(string path)
540548 throw CommonExceptions . FileNotFound ( path ) ;
541549 }
542550 mockFileDataAccessor . GetFile ( path ) . CheckFileAccess ( path , FileAccess . Read ) ;
543- return mockFileDataAccessor . GetFile ( path ) . Contents . ToArray ( ) ;
551+ var fileData = mockFileDataAccessor . GetFile ( path ) ;
552+ mockFileDataAccessor . AdjustTimes ( fileData , TimeAdjustments . LastAccessTime ) ;
553+ return fileData . Contents . ToArray ( ) ;
544554 }
545555
546556 /// <inheritdoc />
@@ -552,10 +562,11 @@ public override string[] ReadAllLines(string path)
552562 {
553563 throw CommonExceptions . FileNotFound ( path ) ;
554564 }
555- mockFileDataAccessor . GetFile ( path ) . CheckFileAccess ( path , FileAccess . Read ) ;
565+ var fileData = mockFileDataAccessor . GetFile ( path ) ;
566+ fileData . CheckFileAccess ( path , FileAccess . Read ) ;
567+ mockFileDataAccessor . AdjustTimes ( fileData , TimeAdjustments . LastAccessTime ) ;
556568
557- return mockFileDataAccessor
558- . GetFile ( path )
569+ return fileData
559570 . TextContents
560571 . SplitLines ( ) ;
561572 }
@@ -575,9 +586,11 @@ public override string[] ReadAllLines(string path, Encoding encoding)
575586 throw CommonExceptions . FileNotFound ( path ) ;
576587 }
577588
578- mockFileDataAccessor . GetFile ( path ) . CheckFileAccess ( path , FileAccess . Read ) ;
589+ var fileData = mockFileDataAccessor . GetFile ( path ) ;
590+ fileData . CheckFileAccess ( path , FileAccess . Read ) ;
591+ mockFileDataAccessor . AdjustTimes ( fileData , TimeAdjustments . LastAccessTime ) ;
579592
580- using ( var ms = new MemoryStream ( mockFileDataAccessor . GetFile ( path ) . Contents ) )
593+ using ( var ms = new MemoryStream ( fileData . Contents ) )
581594 using ( var sr = new StreamReader ( ms , encoding ) )
582595 {
583596 return sr . ReadToEnd ( ) . SplitLines ( ) ;
@@ -675,6 +688,7 @@ public override void SetAccessControl(string path, FileSecurity fileSecurity)
675688 }
676689
677690 var fileData = mockFileDataAccessor . GetFile ( path ) ;
691+ mockFileDataAccessor . AdjustTimes ( fileData , TimeAdjustments . LastAccessTime ) ;
678692 fileData . AccessControl = fileSecurity ;
679693 }
680694
@@ -698,6 +712,7 @@ public override void SetAttributes(string path, FileAttributes fileAttributes)
698712 }
699713 else
700714 {
715+ mockFileDataAccessor . AdjustTimes ( possibleFileData , TimeAdjustments . LastAccessTime ) ;
701716 possibleFileData . Attributes = fileAttributes ;
702717 }
703718 }
@@ -786,7 +801,7 @@ public override void WriteAllBytes(string path, byte[] bytes)
786801 mockFileDataAccessor . PathVerifier . IsLegalAbsoluteOrRelative ( path , "path" ) ;
787802 VerifyDirectoryExists ( path ) ;
788803
789- mockFileDataAccessor . AddFile ( path , new MockFileData ( bytes . ToArray ( ) ) ) ;
804+ mockFileDataAccessor . AddFile ( path , mockFileDataAccessor . AdjustTimes ( new MockFileData ( bytes . ToArray ( ) ) , TimeAdjustments . All ) ) ;
790805 }
791806
792807 /// <summary>
@@ -1056,7 +1071,7 @@ public override void WriteAllText(string path, string contents, Encoding encodin
10561071 VerifyDirectoryExists ( path ) ;
10571072
10581073 MockFileData data = contents == null ? new MockFileData ( new byte [ 0 ] ) : new MockFileData ( contents , encoding ) ;
1059- mockFileDataAccessor . AddFile ( path , data ) ;
1074+ mockFileDataAccessor . AddFile ( path , mockFileDataAccessor . AdjustTimes ( data , TimeAdjustments . All ) ) ;
10601075 }
10611076
10621077 internal static string ReadAllBytes ( byte [ ] contents , Encoding encoding )
@@ -1072,6 +1087,7 @@ private string ReadAllTextInternal(string path, Encoding encoding)
10721087 {
10731088 var mockFileData = mockFileDataAccessor . GetFile ( path ) ;
10741089 mockFileData . CheckFileAccess ( path , FileAccess . Read ) ;
1090+ mockFileDataAccessor . AdjustTimes ( mockFileData , TimeAdjustments . LastAccessTime ) ;
10751091 return ReadAllBytes ( mockFileData . Contents , encoding ) ;
10761092 }
10771093
0 commit comments