1+ #if FEATURE_UNIX_FILE_MODE
2+ using System . Runtime . Versioning ;
3+
4+ namespace System . IO . Abstractions . TestingHelpers . Tests
5+ {
6+ using Collections . Generic ;
7+
8+ using NUnit . Framework ;
9+
10+ using XFS = MockUnixSupport ;
11+
12+ [ UnsupportedOSPlatform ( "windows" ) ]
13+ [ UnixOnly ( "This feature is not supported on Windows." ) ]
14+ public class MockFileSetUnixFileModeTests
15+ {
16+ [ Test ]
17+ public void MockFile_SetUnixFileMode_ShouldSetSpecifiedAccessMode ( [ Values ] UnixFileMode unixFileMode )
18+ {
19+ // Arrange
20+ var mockFileData = new MockFileData ( "Demo text content" ) ;
21+ var fileSystem = new MockFileSystem ( new Dictionary < string , MockFileData >
22+ {
23+ { XFS . Path ( @"C:\something\some.txt" ) , mockFileData }
24+ } ) ;
25+
26+ // Act
27+ fileSystem . File . SetUnixFileMode ( XFS . Path ( @"C:\something\some.txt" ) , unixFileMode ) ;
28+
29+ // Assert
30+ Assert . That ( mockFileData . UnixMode , Is . EqualTo ( unixFileMode ) ) ;
31+ }
32+
33+ [ TestCase ( UnixFileMode . UserRead | UnixFileMode . GroupRead | UnixFileMode . OtherRead ) ]
34+ [ TestCase ( UnixFileMode . UserRead | UnixFileMode . UserWrite | UnixFileMode . UserExecute ) ]
35+ [ TestCase ( UnixFileMode . UserExecute | UnixFileMode . OtherWrite | UnixFileMode . GroupRead ) ]
36+ public void MockFile_SetUnixFileMode_ShouldSetSpecifiedAccessModeFlags ( UnixFileMode unixFileMode )
37+ {
38+ // Arrange
39+ var mockFileData = new MockFileData ( "Demo text content" ) ;
40+ var fileSystem = new MockFileSystem ( new Dictionary < string , MockFileData >
41+ {
42+ { XFS . Path ( @"C:\something\some.txt" ) , mockFileData }
43+ } ) ;
44+
45+ // Act
46+ fileSystem . File . SetUnixFileMode ( XFS . Path ( @"C:\something\some.txt" ) , unixFileMode ) ;
47+
48+ // Assert
49+ Assert . That ( mockFileData . UnixMode , Is . EqualTo ( unixFileMode ) ) ;
50+ }
51+ }
52+ }
53+ #endif
0 commit comments