@@ -608,4 +608,72 @@ public void CreateDirectoryWithExistingData()
608608
609609 Assert . Empty ( entries ) ;
610610 }
611- }
611+
612+ [ Fact ]
613+ public void CreateFilesInSubdirectoryUsingFatFileSystemPerFile ( )
614+ {
615+ using var diskStream = new SparseMemoryStream ( ) ;
616+
617+ diskStream . Position = 0 ;
618+ using ( var fsFormat = FatFileSystem . FormatFloppy ( diskStream , FloppyDiskType . HighDensity , "FLOPPY_IMG " ) )
619+ {
620+ fsFormat . CreateDirectory ( "dir" ) ;
621+ }
622+
623+ for ( var i = 0 ; i < 20 ; i ++ )
624+ {
625+ using ( var fsCreate = new FatFileSystem ( diskStream ) )
626+ {
627+ using ( var fileStream = fsCreate . OpenFile ( $ "dir{ Path . DirectorySeparatorChar } file{ i } .txt", FileMode . Create ) )
628+ {
629+ fileStream . Write ( new byte [ 10 ] ) ;
630+ }
631+ }
632+ }
633+
634+ using var fsAssert = new FatFileSystem ( diskStream ) ;
635+ {
636+ var entries = fsAssert . GetFileSystemEntries ( "" ) . ToList ( ) ;
637+ Assert . Single ( entries ) ;
638+ Assert . Equal ( "dir" , entries [ 0 ] ) ;
639+
640+ entries = fsAssert . GetFileSystemEntries ( "dir" ) . ToList ( ) ;
641+ Assert . Equal ( 20 , entries . Count ) ;
642+ Assert . Equal ( Enumerable . Range ( 0 , 20 ) . Select ( i => $ "dir\\ file{ i } .txt") , entries ) ;
643+ }
644+ }
645+
646+ [ Fact ]
647+ public void CreateFilesInSubdirectoryUsingOneFatFileSystem ( )
648+ {
649+ using var diskStream = new SparseMemoryStream ( ) ;
650+
651+ diskStream . Position = 0 ;
652+ using ( var fsFormat = FatFileSystem . FormatFloppy ( diskStream , FloppyDiskType . HighDensity , "FLOPPY_IMG " ) )
653+ {
654+ fsFormat . CreateDirectory ( "dir" ) ;
655+ }
656+
657+ using ( var fsCreate = new FatFileSystem ( diskStream ) )
658+ {
659+ for ( var i = 0 ; i < 20 ; i ++ )
660+ {
661+ using ( var fileStream = fsCreate . OpenFile ( $ "dir{ Path . DirectorySeparatorChar } file{ i } .txt", FileMode . Create ) )
662+ {
663+ fileStream . Write ( new byte [ 10 ] ) ;
664+ }
665+ }
666+ }
667+
668+ using var fsAssert = new FatFileSystem ( diskStream ) ;
669+ {
670+ var entries = fsAssert . GetFileSystemEntries ( "" ) . ToList ( ) ;
671+ Assert . Single ( entries ) ;
672+ Assert . Equal ( "dir" , entries [ 0 ] ) ;
673+
674+ entries = fsAssert . GetFileSystemEntries ( "dir" ) . ToList ( ) ;
675+ Assert . Equal ( 20 , entries . Count ) ;
676+ Assert . Equal ( Enumerable . Range ( 0 , 20 ) . Select ( i => $ "dir\\ file{ i } .txt") , entries ) ;
677+ }
678+ }
679+ }
0 commit comments