@@ -146,3 +146,64 @@ impl Shell {
146
146
unsafe { ( self . 0 . set_cur_dir ) ( fs_ptr. cast ( ) , dir_ptr. cast ( ) ) }
147
147
}
148
148
}
149
+
150
+ #[ cfg( test) ]
151
+ mod tests {
152
+ use super :: * ;
153
+ use alloc:: vec:: Vec ;
154
+ use uefi:: cstr16;
155
+
156
+ /// Testing Vars struct
157
+ #[ test]
158
+ fn test_vars ( ) {
159
+ // Empty Vars
160
+ let mut vars_mock = Vec :: < u16 > :: new ( ) ;
161
+ vars_mock. push ( 0 ) ;
162
+ vars_mock. push ( 0 ) ;
163
+ let mut vars = Vars {
164
+ inner : vars_mock. as_ptr ( ) . cast ( ) ,
165
+ placeholder : PhantomData ,
166
+ } ;
167
+ assert ! ( vars. next( ) . is_none( ) ) ;
168
+
169
+ // One environment variable in Vars
170
+ let mut vars_mock = Vec :: < u16 > :: new ( ) ;
171
+ vars_mock. push ( b'f' as u16 ) ;
172
+ vars_mock. push ( b'o' as u16 ) ;
173
+ vars_mock. push ( b'o' as u16 ) ;
174
+ vars_mock. push ( 0 ) ;
175
+ vars_mock. push ( 0 ) ;
176
+ let vars = Vars {
177
+ inner : vars_mock. as_ptr ( ) . cast ( ) ,
178
+ placeholder : PhantomData ,
179
+ } ;
180
+ assert_eq ! ( vars. collect:: <Vec <_>>( ) , Vec :: from( [ cstr16!( "foo" ) ] ) ) ;
181
+
182
+ // Multiple environment variables in Vars
183
+ let mut vars_mock = Vec :: < u16 > :: new ( ) ;
184
+ vars_mock. push ( b'f' as u16 ) ;
185
+ vars_mock. push ( b'o' as u16 ) ;
186
+ vars_mock. push ( b'o' as u16 ) ;
187
+ vars_mock. push ( b'1' as u16 ) ;
188
+ vars_mock. push ( 0 ) ;
189
+ vars_mock. push ( b'b' as u16 ) ;
190
+ vars_mock. push ( b'a' as u16 ) ;
191
+ vars_mock. push ( b'r' as u16 ) ;
192
+ vars_mock. push ( 0 ) ;
193
+ vars_mock. push ( b'b' as u16 ) ;
194
+ vars_mock. push ( b'a' as u16 ) ;
195
+ vars_mock. push ( b'z' as u16 ) ;
196
+ vars_mock. push ( b'2' as u16 ) ;
197
+ vars_mock. push ( 0 ) ;
198
+ vars_mock. push ( 0 ) ;
199
+
200
+ let vars = Vars {
201
+ inner : vars_mock. as_ptr ( ) . cast ( ) ,
202
+ placeholder : PhantomData ,
203
+ } ;
204
+ assert_eq ! (
205
+ vars. collect:: <Vec <_>>( ) ,
206
+ Vec :: from( [ cstr16!( "foo1" ) , cstr16!( "bar" ) , cstr16!( "baz2" ) ] )
207
+ ) ;
208
+ }
209
+ }
0 commit comments