File tree Expand file tree Collapse file tree
System.IO.Abstractions.TestingHelpers.Tests
System.IO.Abstractions.TestingHelpers Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -74,5 +74,35 @@ public void MockFileStream_Constructor_ReadTypeNotWritable()
7474 Assert . IsFalse ( stream . CanWrite ) ;
7575 Assert . Throws < NotSupportedException > ( ( ) => stream . WriteByte ( 1 ) ) ;
7676 }
77+
78+ [ Test ]
79+ public void MockFileStream_Close_MultipleCallsDontThrow ( )
80+ {
81+ var fileSystem = new MockFileSystem ( ) ;
82+ var path = XFS . Path ( "C:\\ test" ) ;
83+ fileSystem . AddFile ( path , new MockFileData ( "Bla" ) ) ;
84+ var stream = fileSystem . File . OpenRead ( path ) ;
85+
86+ // Act
87+ stream . Close ( ) ;
88+
89+ // Assert
90+ Assert . DoesNotThrow ( ( ) => stream . Close ( ) ) ;
91+ }
92+
93+ [ Test ]
94+ public void MockFileStream_Dispose_MultipleCallsDontThrow ( )
95+ {
96+ var fileSystem = new MockFileSystem ( ) ;
97+ var path = XFS . Path ( "C:\\ test" ) ;
98+ fileSystem . AddFile ( path , new MockFileData ( "Bla" ) ) ;
99+ var stream = fileSystem . File . OpenRead ( path ) ;
100+
101+ // Act
102+ stream . Dispose ( ) ;
103+
104+ // Assert
105+ Assert . DoesNotThrow ( ( ) => stream . Dispose ( ) ) ;
106+ }
77107 }
78108}
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ public class MockFileStream : MemoryStream
66 private readonly IMockFileDataAccessor mockFileDataAccessor ;
77 private readonly string path ;
88 private readonly bool canWrite = true ;
9+ private bool disposed ;
910
1011 public enum StreamType
1112 {
@@ -53,8 +54,13 @@ public override void Close()
5354#else
5455 protected override void Dispose ( bool disposing )
5556 {
57+ if ( disposed )
58+ {
59+ return ;
60+ }
5661 InternalFlush ( ) ;
5762 base . Dispose ( disposing ) ;
63+ disposed = true ;
5864 }
5965#endif
6066
You can’t perform that action at this time.
0 commit comments