@@ -300,26 +300,49 @@ mod tests {
300
300
}
301
301
302
302
#[ test]
303
- fn test_size_builder ( ) {
303
+ fn test_builder ( ) {
304
304
let mut builder = Multiboot2InformationBuilder :: new ( ) ;
305
305
// Multiboot2 basic information + end tag
306
- let expected_len = 8 + 8 ;
306
+ let mut expected_len = 8 + 8 ;
307
307
assert_eq ! ( builder. expected_len( ) , expected_len) ;
308
308
309
309
// the most simple tag
310
310
builder. basic_memory_info_tag ( BasicMemoryInfoTag :: new ( 640 , 7 * 1024 ) ) ;
311
+ expected_len += 16 ;
312
+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
311
313
// a tag that has a dynamic size
312
314
builder. command_line_tag ( CommandLineTag :: new ( "test" ) ) ;
315
+ expected_len += 8 + 5 + 3 ; // padding
316
+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
313
317
// many modules
314
318
builder. add_module_tag ( ModuleTag :: new ( 0 , 1234 , "module1" ) ) ;
319
+ expected_len += 16 + 8 ;
320
+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
315
321
builder. add_module_tag ( ModuleTag :: new ( 5678 , 6789 , "module2" ) ) ;
322
+ expected_len += 16 + 8 ;
323
+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
316
324
317
325
println ! ( "builder: {:#?}" , builder) ;
318
326
println ! ( "expected_len: {} bytes" , builder. expected_len( ) ) ;
327
+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
319
328
320
329
let mb2i_data = builder. build ( ) ;
321
330
let mb2i_addr = mb2i_data. as_ptr ( ) as usize ;
322
- let mb2i = unsafe { load ( mb2i_addr) } ;
331
+ let mb2i = unsafe { load ( mb2i_addr) }
332
+ . expect ( "the generated information to be readable" ) ;
323
333
println ! ( "{:#?}" , mb2i) ;
334
+ assert_eq ! ( mb2i. basic_memory_info_tag( ) . unwrap( ) . memory_lower( ) , 640 ) ;
335
+ assert_eq ! ( mb2i. basic_memory_info_tag( ) . unwrap( ) . memory_upper( ) , 7 * 1024 ) ;
336
+ assert_eq ! ( mb2i. command_line_tag( ) . unwrap( ) . command_line( ) . unwrap( ) , "test" ) ;
337
+ let mut modules = mb2i. module_tags ( ) ;
338
+ let module_1 = modules. next ( ) . unwrap ( ) ;
339
+ assert_eq ! ( module_1. start_address( ) , 0 ) ;
340
+ assert_eq ! ( module_1. end_address( ) , 1234 ) ;
341
+ assert_eq ! ( module_1. cmdline( ) . unwrap( ) , "module1" ) ;
342
+ let module_2 = modules. next ( ) . unwrap ( ) ;
343
+ assert_eq ! ( module_2. start_address( ) , 5678 ) ;
344
+ assert_eq ! ( module_2. end_address( ) , 6789 ) ;
345
+ assert_eq ! ( module_2. cmdline( ) . unwrap( ) , "module2" ) ;
346
+ assert ! ( modules. next( ) . is_none( ) ) ;
324
347
}
325
348
}
0 commit comments