@@ -45,15 +45,22 @@ pub fn test() {
45
45
let mut test_val_buf = [ 0u16 ; 32 ] ;
46
46
let test_val = CStr16 :: from_str_with_buf ( "test_val" , & mut test_val_buf) . unwrap ( ) ;
47
47
assert ! ( shell. get_env( Some ( test_var) ) . is_none( ) ) ;
48
- shell. set_env ( test_var, test_val, false ) ;
48
+ let status = shell. set_env ( test_var, test_val, false ) ;
49
+ assert_eq ! ( status, Status :: SUCCESS ) ;
49
50
let cur_env_str = shell
50
51
. get_env ( Some ( test_var) )
51
52
. expect ( "Could not get environment variable" )
52
53
. val ( )
53
54
. unwrap ( ) ;
54
55
assert_eq ! ( cur_env_str, test_val) ;
55
56
56
- /* Test setting and getting current directory */
57
+ /* Test deleting environment variable */
58
+ let test_val = CStr16 :: from_str_with_buf ( "" , & mut test_val_buf) . unwrap ( ) ;
59
+ let status = shell. set_env ( test_var, test_val, false ) ;
60
+ assert_eq ! ( status, Status :: SUCCESS ) ;
61
+ assert ! ( shell. get_env( Some ( test_var) ) . is_none( ) ) ;
62
+
63
+ /* Test setting and getting current file system and directory */
57
64
let mut fs_buf = [ 0u16 ; 16 ] ;
58
65
let fs_var = CStr16 :: from_str_with_buf ( "fs0:" , & mut fs_buf) . unwrap ( ) ;
59
66
let mut dir_buf = [ 0u16 ; 32 ] ;
@@ -65,6 +72,44 @@ pub fn test() {
65
72
let expected_fs_str = CStr16 :: from_str_with_buf ( "FS0:\\ " , & mut test_buf) . unwrap ( ) ;
66
73
assert_eq ! ( cur_fs_str, expected_fs_str) ;
67
74
75
+ let fs_var = CStr16 :: from_str_with_buf ( "fs1:" , & mut fs_buf) . unwrap ( ) ;
76
+ let dir_var = CStr16 :: from_str_with_buf ( "/" , & mut dir_buf) . unwrap ( ) ;
77
+ let status = shell. set_cur_dir ( Some ( fs_var) , Some ( dir_var) ) ;
78
+ assert_eq ! ( status, Status :: SUCCESS ) ;
79
+
80
+ let cur_fs_str = shell. get_cur_dir ( Some ( fs_var) ) . expect ( "Could not get the current file system mapping" ) ;
81
+ assert_ne ! ( cur_fs_str, expected_fs_str) ;
82
+ let expected_fs_str = CStr16 :: from_str_with_buf ( "FS1:\\ " , & mut test_buf) . unwrap ( ) ;
83
+ assert_eq ! ( cur_fs_str, expected_fs_str) ;
84
+
85
+ let fs_var = CStr16 :: from_str_with_buf ( "fs0:" , & mut fs_buf) . unwrap ( ) ;
86
+ let dir_var = CStr16 :: from_str_with_buf ( "efi/" , & mut dir_buf) . unwrap ( ) ;
87
+ let status = shell. set_cur_dir ( Some ( fs_var) , Some ( dir_var) ) ;
88
+ assert_eq ! ( status, Status :: SUCCESS ) ;
89
+
90
+ let cur_fs_str = shell. get_cur_dir ( Some ( fs_var) ) . expect ( "Could not get the current file system mapping" ) ;
91
+ assert_ne ! ( cur_fs_str, expected_fs_str) ;
92
+ let expected_fs_str = CStr16 :: from_str_with_buf ( "FS0:\\ efi" , & mut test_buf) . unwrap ( ) ;
93
+ assert_eq ! ( cur_fs_str, expected_fs_str) ;
94
+
95
+ /* Test NULL file system cases */
96
+ let dir_var = CStr16 :: from_str_with_buf ( "fs0:/" , & mut dir_buf) . unwrap ( ) ;
97
+ let status = shell. set_cur_dir ( None , Some ( dir_var) ) ;
98
+ assert_eq ! ( status, Status :: SUCCESS ) ;
99
+ let cur_fs_str = shell. get_cur_dir ( Some ( fs_var) ) . expect ( "Could not get the current file system mapping" ) ;
100
+ let expected_fs_str = CStr16 :: from_str_with_buf ( "FS0:" , & mut test_buf) . unwrap ( ) ;
101
+ assert_eq ! ( cur_fs_str, expected_fs_str) ;
102
+
103
+ let cur_fs_str = shell. get_cur_dir ( None ) . expect ( "Could not get the current file system mapping" ) ;
104
+ assert_eq ! ( cur_fs_str, expected_fs_str) ;
105
+
106
+ let dir_var = CStr16 :: from_str_with_buf ( "/efi" , & mut dir_buf) . unwrap ( ) ;
107
+ let status = shell. set_cur_dir ( None , Some ( dir_var) ) ;
108
+ assert_eq ! ( status, Status :: SUCCESS ) ;
109
+ let cur_fs_str = shell. get_cur_dir ( Some ( fs_var) ) . expect ( "Could not get the current file system mapping" ) ;
110
+ let expected_fs_str = CStr16 :: from_str_with_buf ( "FS0:\\ efi" , & mut test_buf) . unwrap ( ) ;
111
+ assert_eq ! ( cur_fs_str, expected_fs_str) ;
112
+
68
113
// Create a file
69
114
// let status = shell.create_file(test_str, 0).expect("Could not create file");
70
115
// let mut size: u64 = 0;
0 commit comments