@@ -15,11 +15,13 @@ fn test_existing_dir(directory: &mut Directory) {
15
15
info ! ( "Testing existing directory" ) ;
16
16
17
17
let input_dir_path = cstr16 ! ( "test_dir" ) ;
18
- let mut dir = directory
18
+ let dir = directory
19
19
. 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" ) ;
23
25
24
26
// Collect and validate the directory entries.
25
27
let mut entry_names = vec ! [ ] ;
@@ -129,15 +131,17 @@ fn test_create_file(directory: &mut Directory) {
129
131
info ! ( "Testing file creation" ) ;
130
132
131
133
// Create a new file.
132
- let mut file = directory
134
+ let file = directory
133
135
. open (
134
136
cstr16 ! ( "new_test_file.txt" ) ,
135
137
FileMode :: CreateReadWrite ,
136
138
FileAttribute :: empty ( ) ,
137
139
)
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" ) ;
141
145
file. write ( b"test output data" ) . unwrap ( ) ;
142
146
}
143
147
@@ -261,10 +265,21 @@ pub fn test_known_disk(bt: &BootServices) {
261
265
let mut sfs = bt
262
266
. open_protocol_exclusive :: < SimpleFileSystem > ( handle)
263
267
. 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
+ }
265
280
266
281
let mut fs_info_buf = vec ! [ 0 ; 128 ] ;
267
- let fs_info = directory
282
+ let fs_info = root_directory
268
283
. get_info :: < FileSystemInfo > ( & mut fs_info_buf)
269
284
. unwrap ( ) ;
270
285
@@ -281,13 +296,13 @@ pub fn test_known_disk(bt: &BootServices) {
281
296
assert_eq ! ( fs_info. block_size( ) , 512 ) ;
282
297
283
298
// 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 ( ) ;
285
300
assert_eq ! ( * fs_info, * boxed_fs_info) ;
286
301
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 ) ;
291
306
}
292
307
293
308
test_raw_disk_io ( handle, bt) ;
0 commit comments