@@ -45,15 +45,22 @@ pub fn test() {
4545 let mut test_val_buf = [ 0u16 ; 32 ] ;
4646 let test_val = CStr16 :: from_str_with_buf ( "test_val" , & mut test_val_buf) . unwrap ( ) ;
4747 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 ) ;
4950 let cur_env_str = shell
5051 . get_env ( Some ( test_var) )
5152 . expect ( "Could not get environment variable" )
5253 . val ( )
5354 . unwrap ( ) ;
5455 assert_eq ! ( cur_env_str, test_val) ;
5556
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 */
5764 let mut fs_buf = [ 0u16 ; 16 ] ;
5865 let fs_var = CStr16 :: from_str_with_buf ( "fs0:" , & mut fs_buf) . unwrap ( ) ;
5966 let mut dir_buf = [ 0u16 ; 32 ] ;
@@ -65,6 +72,44 @@ pub fn test() {
6572 let expected_fs_str = CStr16 :: from_str_with_buf ( "FS0:\\ " , & mut test_buf) . unwrap ( ) ;
6673 assert_eq ! ( cur_fs_str, expected_fs_str) ;
6774
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+
68113 // Create a file
69114 // let status = shell.create_file(test_str, 0).expect("Could not create file");
70115 // let mut size: u64 = 0;
0 commit comments