1
- use ext2:: Ext2Fs ;
1
+ use ext2:: { Error , Ext2Fs } ;
2
2
use filesystem:: MemoryBlockDevice ;
3
3
4
4
mod common;
@@ -13,9 +13,7 @@ generate_tests!(
13
13
) ;
14
14
15
15
fn test_create_and_write_file ( sector_size : usize ) {
16
- let image_data = common:: load_copy_of_image ( "tests/filesystems/empty.img" ) ;
17
- let device = MemoryBlockDevice :: try_new ( sector_size, image_data) . unwrap ( ) ;
18
- let mut fs = Ext2Fs :: try_new ( device) . unwrap ( ) ;
16
+ let mut fs = cow_fs ! ( "tests/filesystems/empty.img" , sector_size) ;
19
17
20
18
let file_name = "my_file.txt" ;
21
19
let mut root = fs. read_root_inode ( ) . unwrap ( ) ;
@@ -28,4 +26,48 @@ fn test_create_and_write_file(sector_size: usize) {
28
26
for i in 0 ..( ( 1024 * 12 ) / data. len ( ) ) {
29
27
assert_eq ! ( fs. write_to_file( & mut file, i * data. len( ) , data) . unwrap( ) , data. len( ) ) ;
30
28
}
29
+ }
30
+
31
+ generate_tests ! (
32
+ test_create_files:
33
+ 512 - test_create_files_standard,
34
+ 1 - test_create_files_tiny,
35
+ 32 - test_create_files_small,
36
+ 32768 - test_create_files_large,
37
+ 1048576 - test_create_files_huge,
38
+ ) ;
39
+
40
+ fn test_create_files ( sector_size : usize ) {
41
+ let mut fs = cow_fs ! ( "tests/filesystems/empty.img" , sector_size) ;
42
+
43
+ let mut root = fs. read_root_inode ( ) . unwrap ( ) ;
44
+ for i in 0 ..25 {
45
+ let file_name = format ! ( "file_{}.txt" , i) ;
46
+ let file = fs. create_regular_file ( & mut root, & file_name) . unwrap ( ) ;
47
+ assert ! ( fs. list_dir( & root) . unwrap( ) . iter( ) . find( |e| e. name( ) == Some ( & file_name) ) . is_some( ) ) ;
48
+ assert_eq ! ( file. len( ) , 0 ) ;
49
+ }
50
+ }
51
+
52
+ generate_tests ! (
53
+ test_create_file_collision:
54
+ 512 - test_create_file_collision_standard,
55
+ 1 - test_create_file_collision_tiny,
56
+ 32 - test_create_file_collision_small,
57
+ 32768 - test_create_file_collision_large,
58
+ 1048576 - test_create_file_collision_huge,
59
+ ) ;
60
+
61
+ fn test_create_file_collision ( sector_size : usize ) {
62
+ let mut fs = cow_fs ! ( "tests/filesystems/empty.img" , sector_size) ;
63
+
64
+ let mut root = fs. read_root_inode ( ) . unwrap ( ) ;
65
+ let file_name = "file.txt" ;
66
+ let file = fs. create_regular_file ( & mut root, file_name) . unwrap ( ) ;
67
+ assert ! ( fs. list_dir( & root) . unwrap( ) . iter( ) . find( |e| e. name( ) == Some ( file_name) ) . is_some( ) ) ;
68
+ assert_eq ! ( file. len( ) , 0 ) ;
69
+
70
+ let mut root = fs. read_root_inode ( ) . unwrap ( ) ;
71
+ let result = fs. create_regular_file ( & mut root, file_name) ;
72
+ assert_eq ! ( result. unwrap_err( ) , Error :: EntryExists ) ;
31
73
}
0 commit comments