@@ -15,11 +15,13 @@ fn test_existing_dir(directory: &mut Directory) {
1515 info ! ( "Testing existing directory" ) ;
1616
1717 let input_dir_path = cstr16 ! ( "test_dir" ) ;
18- let mut dir = directory
18+ let dir = directory
1919 . open ( input_dir_path, FileMode :: Read , FileAttribute :: empty ( ) )
20- . expect ( "failed to open directory" )
21- . into_directory ( )
22- . expect ( "not a directory" ) ;
20+ . expect ( "failed to open directory" ) ;
21+
22+ assert ! ( dir. is_directory( ) . unwrap( ) ) ;
23+
24+ let mut dir = dir. into_directory ( ) . expect ( "not a directory" ) ;
2325
2426 // Collect and validate the directory entries.
2527 let mut entry_names = vec ! [ ] ;
@@ -129,15 +131,17 @@ fn test_create_file(directory: &mut Directory) {
129131 info ! ( "Testing file creation" ) ;
130132
131133 // Create a new file.
132- let mut file = directory
134+ let file = directory
133135 . open (
134136 cstr16 ! ( "new_test_file.txt" ) ,
135137 FileMode :: CreateReadWrite ,
136138 FileAttribute :: empty ( ) ,
137139 )
138- . expect ( "failed to create file" )
139- . into_regular_file ( )
140- . expect ( "not a regular file" ) ;
140+ . expect ( "failed to create file" ) ;
141+
142+ assert ! ( file. is_regular_file( ) . unwrap( ) ) ;
143+
144+ let mut file = file. into_regular_file ( ) . expect ( "not a regular file" ) ;
141145 file. write ( b"test output data" ) . unwrap ( ) ;
142146}
143147
@@ -261,10 +265,21 @@ pub fn test_known_disk(bt: &BootServices) {
261265 let mut sfs = bt
262266 . open_protocol_exclusive :: < SimpleFileSystem > ( handle)
263267 . expect ( "Failed to get simple file system" ) ;
264- let mut directory = sfs. open_volume ( ) . unwrap ( ) ;
268+ let mut root_directory = sfs. open_volume ( ) . unwrap ( ) ;
269+
270+ // test is_directory() and is_regular_file() from the File trait which is the
271+ // base for into_type() used later in the test.
272+ {
273+ // because File is "Sized", we cannot cast it to &dyn
274+ fn test_is_directory ( file : & impl File ) {
275+ assert_eq ! ( Ok ( true ) , file. is_directory( ) ) ;
276+ assert_eq ! ( Ok ( false ) , file. is_regular_file( ) ) ;
277+ }
278+ test_is_directory ( & root_directory) ;
279+ }
265280
266281 let mut fs_info_buf = vec ! [ 0 ; 128 ] ;
267- let fs_info = directory
282+ let fs_info = root_directory
268283 . get_info :: < FileSystemInfo > ( & mut fs_info_buf)
269284 . unwrap ( ) ;
270285
@@ -281,13 +296,13 @@ pub fn test_known_disk(bt: &BootServices) {
281296 assert_eq ! ( fs_info. block_size( ) , 512 ) ;
282297
283298 // Check that `get_boxed_info` returns the same info.
284- let boxed_fs_info = directory . get_boxed_info :: < FileSystemInfo > ( ) . unwrap ( ) ;
299+ let boxed_fs_info = root_directory . get_boxed_info :: < FileSystemInfo > ( ) . unwrap ( ) ;
285300 assert_eq ! ( * fs_info, * boxed_fs_info) ;
286301
287- test_existing_dir ( & mut directory ) ;
288- test_delete_warning ( & mut directory ) ;
289- test_existing_file ( & mut directory ) ;
290- test_create_file ( & mut directory ) ;
302+ test_existing_dir ( & mut root_directory ) ;
303+ test_delete_warning ( & mut root_directory ) ;
304+ test_existing_file ( & mut root_directory ) ;
305+ test_create_file ( & mut root_directory ) ;
291306 }
292307
293308 test_raw_disk_io ( handle, bt) ;
0 commit comments