@@ -15,9 +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" )
20
+ . expect ( "failed to open directory" ) ;
21
+
22
+ assert ! ( dir. is_directory( ) . unwrap( ) ) ;
23
+
24
+ let mut dir = dir
21
25
. into_directory ( )
22
26
. expect ( "not a directory" ) ;
23
27
@@ -129,13 +133,17 @@ fn test_create_file(directory: &mut Directory) {
129
133
info ! ( "Testing file creation" ) ;
130
134
131
135
// Create a new file.
132
- let mut file = directory
136
+ let file = directory
133
137
. open (
134
138
cstr16 ! ( "new_test_file.txt" ) ,
135
139
FileMode :: CreateReadWrite ,
136
140
FileAttribute :: empty ( ) ,
137
141
)
138
- . expect ( "failed to create file" )
142
+ . expect ( "failed to create file" ) ;
143
+
144
+ assert ! ( file. is_regular_file( ) . unwrap( ) ) ;
145
+
146
+ let mut file = file
139
147
. into_regular_file ( )
140
148
. expect ( "not a regular file" ) ;
141
149
file. write ( b"test output data" ) . unwrap ( ) ;
@@ -261,10 +269,22 @@ pub fn test_known_disk(bt: &BootServices) {
261
269
let mut sfs = bt
262
270
. open_protocol_exclusive :: < SimpleFileSystem > ( handle)
263
271
. expect ( "Failed to get simple file system" ) ;
264
- let mut directory = sfs. open_volume ( ) . unwrap ( ) ;
272
+ let mut root_directory = sfs. open_volume ( ) . unwrap ( ) ;
273
+
274
+ // test is_directory() and is_regular_file() from the File trait which is the
275
+ // base for into_type() used later in the test.
276
+ {
277
+ // because File is "Sized", we cannot cast it to &dyn
278
+ fn test_is_directory ( file : & impl File ) {
279
+ assert_eq ! ( Ok ( true ) , file. is_directory( ) ) ;
280
+ assert_eq ! ( Ok ( false ) , file. is_regular_file( ) ) ;
281
+ }
282
+ test_is_directory ( & root_directory) ;
283
+ }
284
+
265
285
266
286
let mut fs_info_buf = vec ! [ 0 ; 128 ] ;
267
- let fs_info = directory
287
+ let fs_info = root_directory
268
288
. get_info :: < FileSystemInfo > ( & mut fs_info_buf)
269
289
. unwrap ( ) ;
270
290
@@ -281,13 +301,13 @@ pub fn test_known_disk(bt: &BootServices) {
281
301
assert_eq ! ( fs_info. block_size( ) , 512 ) ;
282
302
283
303
// Check that `get_boxed_info` returns the same info.
284
- let boxed_fs_info = directory . get_boxed_info :: < FileSystemInfo > ( ) . unwrap ( ) ;
304
+ let boxed_fs_info = root_directory . get_boxed_info :: < FileSystemInfo > ( ) . unwrap ( ) ;
285
305
assert_eq ! ( * fs_info, * boxed_fs_info) ;
286
306
287
- test_existing_dir ( & mut directory ) ;
288
- test_delete_warning ( & mut directory ) ;
289
- test_existing_file ( & mut directory ) ;
290
- test_create_file ( & mut directory ) ;
307
+ test_existing_dir ( & mut root_directory ) ;
308
+ test_delete_warning ( & mut root_directory ) ;
309
+ test_existing_file ( & mut root_directory ) ;
310
+ test_create_file ( & mut root_directory ) ;
291
311
}
292
312
293
313
test_raw_disk_io ( handle, bt) ;
0 commit comments