1
+ using System . Threading . Tasks ;
2
+
1
3
namespace System . IO . Abstractions . TestingHelpers . Tests
2
4
{
3
5
using Collections . Generic ;
@@ -217,7 +219,7 @@ public void MockFile_OpenText_ShouldRetainLastWriteTime()
217
219
}
218
220
219
221
[ Test ]
220
- public void MockFile_OpenText_ShouldRetainLastAccessTime ( )
222
+ public void MockFile_OpenText_ShouldUpdateLastAccessTime ( )
221
223
{
222
224
// Arrange
223
225
var fs = new MockFileSystem ( ) ;
@@ -234,7 +236,101 @@ public void MockFile_OpenText_ShouldRetainLastAccessTime()
234
236
}
235
237
236
238
// Assert
237
- Assert . AreEqual ( lastAccessTime , fs . FileInfo . FromFileName ( filepath ) . LastAccessTime ) ;
239
+ Assert . LessOrEqual ( DateTime . Now - fs . FileInfo . FromFileName ( filepath ) . LastAccessTime , TimeSpan . FromSeconds ( 1 ) ) ;
240
+ }
241
+
242
+ [ Test ]
243
+ public void MockFile_Read_ShouldRetainCreationTimeAndUpdateLastAccessTime ( )
244
+ {
245
+ // Arrange
246
+ var fs = new MockFileSystem ( ) ;
247
+ var filepath = XFS . Path ( @"C:\TestData\test.txt" ) ;
248
+ var file = new MockFileData ( new byte [ ] { 1 , 2 , 3 } ) ;
249
+ var lastAccessTime = new DateTime ( 2012 , 03 , 21 ) ;
250
+ file . LastAccessTime = lastAccessTime ;
251
+ var creationTime = new DateTime ( 2012 , 03 , 20 ) ;
252
+ file . CreationTime = creationTime ;
253
+ fs . AddFile ( filepath , file ) ;
254
+
255
+ var fi = fs . FileInfo . FromFileName ( filepath ) ;
256
+ var stream = fi . OpenRead ( ) ;
257
+ var buffer = new byte [ 16 ] ;
258
+ stream . Read ( buffer , 0 , buffer . Length ) ;
259
+ fi . Refresh ( ) ;
260
+ // Assert
261
+ Assert . AreEqual ( creationTime , fi . CreationTime ) ;
262
+ Assert . LessOrEqual ( DateTime . Now - fi . LastAccessTime , TimeSpan . FromSeconds ( 1 ) ) ;
263
+ }
264
+
265
+ [ Test ]
266
+ public async Task MockFile_ReadAsync_ShouldRetainCreationTimeAndUpdateLastAccessTime ( )
267
+ {
268
+ // Arrange
269
+ var fs = new MockFileSystem ( ) ;
270
+ var filepath = XFS . Path ( @"C:\TestData\test.txt" ) ;
271
+ var file = new MockFileData ( new byte [ ] { 1 , 2 , 3 } ) ;
272
+ var lastAccessTime = new DateTime ( 2012 , 03 , 21 ) ;
273
+ file . LastAccessTime = lastAccessTime ;
274
+ var creationTime = new DateTime ( 2012 , 03 , 20 ) ;
275
+ file . CreationTime = creationTime ;
276
+ fs . AddFile ( filepath , file ) ;
277
+
278
+ var fi = fs . FileInfo . FromFileName ( filepath ) ;
279
+ var stream = fi . OpenRead ( ) ;
280
+ var buffer = new byte [ 16 ] ;
281
+ await stream . ReadAsync ( buffer , 0 , buffer . Length ) ;
282
+ fi . Refresh ( ) ;
283
+ // Assert
284
+ Assert . AreEqual ( creationTime , fi . CreationTime ) ;
285
+ Assert . LessOrEqual ( DateTime . Now - fi . LastAccessTime , TimeSpan . FromSeconds ( 1 ) ) ;
286
+ }
287
+
288
+ [ Test ]
289
+ public void MockFile_Write_ShouldRetainCreationTimeAndUpdateLastAccessTimeAndLastWriteTime ( )
290
+ {
291
+ // Arrange
292
+ var fs = new MockFileSystem ( ) ;
293
+ var filepath = XFS . Path ( @"C:\TestData\test.txt" ) ;
294
+ var file = new MockFileData ( new byte [ ] { 1 , 2 , 3 } ) ;
295
+ var lastAccessTime = new DateTime ( 2012 , 03 , 21 ) ;
296
+ file . LastAccessTime = lastAccessTime ;
297
+ var creationTime = new DateTime ( 2012 , 03 , 20 ) ;
298
+ file . CreationTime = creationTime ;
299
+ fs . AddFile ( filepath , file ) ;
300
+
301
+ var fi = fs . FileInfo . FromFileName ( filepath ) ;
302
+ var stream = fi . OpenWrite ( ) ;
303
+ var buffer = new byte [ 16 ] ;
304
+ stream . Write ( buffer , 0 , buffer . Length ) ;
305
+ fi . Refresh ( ) ;
306
+ // Assert
307
+ Assert . AreEqual ( creationTime , fi . CreationTime ) ;
308
+ Assert . LessOrEqual ( DateTime . Now - fi . LastAccessTime , TimeSpan . FromSeconds ( 1 ) ) ;
309
+ Assert . LessOrEqual ( DateTime . Now - fi . LastWriteTime , TimeSpan . FromSeconds ( 1 ) ) ;
310
+ }
311
+
312
+ [ Test ]
313
+ public async Task MockFile_WriteAsync_ShouldRetainCreationTimeAndUpdateLastAccessTimeAndLastWriteTime ( )
314
+ {
315
+ // Arrange
316
+ var fs = new MockFileSystem ( ) ;
317
+ var filepath = XFS . Path ( @"C:\TestData\test.txt" ) ;
318
+ var file = new MockFileData ( new byte [ ] { 1 , 2 , 3 } ) ;
319
+ var lastAccessTime = new DateTime ( 2012 , 03 , 21 ) ;
320
+ file . LastAccessTime = lastAccessTime ;
321
+ var creationTime = new DateTime ( 2012 , 03 , 20 ) ;
322
+ file . CreationTime = creationTime ;
323
+ fs . AddFile ( filepath , file ) ;
324
+
325
+ var fi = fs . FileInfo . FromFileName ( filepath ) ;
326
+ var stream = fi . OpenWrite ( ) ;
327
+ var buffer = new byte [ 16 ] ;
328
+ await stream . WriteAsync ( buffer , 0 , buffer . Length ) ;
329
+ fi . Refresh ( ) ;
330
+ // Assert
331
+ Assert . AreEqual ( creationTime , fi . CreationTime ) ;
332
+ Assert . LessOrEqual ( DateTime . Now - fi . LastAccessTime , TimeSpan . FromSeconds ( 1 ) ) ;
333
+ Assert . LessOrEqual ( DateTime . Now - fi . LastWriteTime , TimeSpan . FromSeconds ( 1 ) ) ;
238
334
}
239
335
240
336
[ Test ]
0 commit comments