@@ -392,24 +392,41 @@ async Task Act() =>
392392 }
393393
394394 [ Test ]
395- public async Task MockFileStream_WhenExclusiveStreamOpen_ShouldThrowIOException ( )
395+ [ TestCase ( FileShare . None , FileAccess . Read ) ]
396+ [ TestCase ( FileShare . None , FileAccess . ReadWrite ) ]
397+ [ TestCase ( FileShare . None , FileAccess . Write ) ]
398+ [ TestCase ( FileShare . Read , FileAccess . Write ) ]
399+ [ TestCase ( FileShare . Read , FileAccess . ReadWrite ) ]
400+ [ TestCase ( FileShare . Write , FileAccess . Read ) ]
401+ public async Task MockFileStream_ConflictingShareOrAccess_ShouldThrowUntilHandleReleased (
402+ FileShare share ,
403+ FileAccess access )
396404 {
397405 var fileSystem = new MockFileSystem ( ) ;
398406 fileSystem . File . WriteAllText ( "foo.txt" , "" ) ;
399- using ( new MockFileStream ( fileSystem , "foo.txt" , FileMode . Open , FileAccess . Read , FileShare . None ) )
407+ using ( new MockFileStream ( fileSystem , "foo.txt" , FileMode . Open , FileAccess . Read , share ) )
400408 {
401- await That ( ( ) => new MockFileStream ( fileSystem , "foo.txt" , FileMode . Open , FileAccess . Read ) ) . Throws < IOException > ( ) ;
409+ await That ( ( ) => new MockFileStream ( fileSystem , "foo.txt" , FileMode . Open , access ) ) . Throws < IOException > ( ) ;
402410 }
411+ await That ( ( ) => new MockFileStream ( fileSystem , "foo.txt" , FileMode . Open , access ) ) . DoesNotThrow ( ) ;
403412 }
404413
405414 [ Test ]
406- public async Task MockFileStream_WhenExclusiveStreamClosed_ShouldNotThrow ( )
415+ [ TestCase ( FileShare . Read , FileAccess . Read ) ]
416+ [ TestCase ( FileShare . Read | FileShare . Write , FileAccess . Read ) ]
417+ [ TestCase ( FileShare . Read | FileShare . Write , FileAccess . ReadWrite ) ]
418+ [ TestCase ( FileShare . ReadWrite , FileAccess . Read ) ]
419+ [ TestCase ( FileShare . ReadWrite , FileAccess . ReadWrite ) ]
420+ [ TestCase ( FileShare . ReadWrite , FileAccess . Write ) ]
421+ public async Task MockFileStream_CompatibleShareOrAccess_ShouldNotThrow (
422+ FileShare share ,
423+ FileAccess access )
407424 {
408425 var fileSystem = new MockFileSystem ( ) ;
409426 fileSystem . File . WriteAllText ( "foo.txt" , "" ) ;
410- var stream = new MockFileStream ( fileSystem , "foo.txt" , FileMode . Open , FileAccess . Read , FileShare . None ) ;
411- stream . Dispose ( ) ;
412-
413- await That ( ( ) => new MockFileStream ( fileSystem , "foo.txt" , FileMode . Open , FileAccess . Read ) ) . DoesNotThrow ( ) ;
427+ using ( new MockFileStream ( fileSystem , "foo.txt" , FileMode . Open , FileAccess . Read , share ) )
428+ {
429+ await That ( ( ) => new MockFileStream ( fileSystem , "foo.txt" , FileMode . Open , access ) ) . DoesNotThrow ( ) ;
430+ }
414431 }
415432}
0 commit comments