@@ -300,26 +300,54 @@ mod tests {
300300 }
301301
302302 #[ test]
303- fn test_size_builder ( ) {
303+ fn test_builder ( ) {
304304 let mut builder = Multiboot2InformationBuilder :: new ( ) ;
305305 // Multiboot2 basic information + end tag
306- let expected_len = 8 + 8 ;
306+ let mut expected_len = 8 + 8 ;
307307 assert_eq ! ( builder. expected_len( ) , expected_len) ;
308308
309309 // the most simple tag
310310 builder. basic_memory_info_tag ( BasicMemoryInfoTag :: new ( 640 , 7 * 1024 ) ) ;
311+ expected_len += 16 ;
312+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
311313 // a tag that has a dynamic size
312314 builder. command_line_tag ( CommandLineTag :: new ( "test" ) ) ;
315+ expected_len += 8 + 5 + 3 ; // padding
316+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
313317 // many modules
314318 builder. add_module_tag ( ModuleTag :: new ( 0 , 1234 , "module1" ) ) ;
319+ expected_len += 16 + 8 ;
320+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
315321 builder. add_module_tag ( ModuleTag :: new ( 5678 , 6789 , "module2" ) ) ;
322+ expected_len += 16 + 8 ;
323+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
316324
317325 println ! ( "builder: {:#?}" , builder) ;
318326 println ! ( "expected_len: {} bytes" , builder. expected_len( ) ) ;
327+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
319328
320329 let mb2i_data = builder. build ( ) ;
321330 let mb2i_addr = mb2i_data. as_ptr ( ) as usize ;
322- let mb2i = unsafe { load ( mb2i_addr) } ;
331+ let mb2i = unsafe { load ( mb2i_addr) } . expect ( "the generated information to be readable" ) ;
323332 println ! ( "{:#?}" , mb2i) ;
333+ assert_eq ! ( mb2i. basic_memory_info_tag( ) . unwrap( ) . memory_lower( ) , 640 ) ;
334+ assert_eq ! (
335+ mb2i. basic_memory_info_tag( ) . unwrap( ) . memory_upper( ) ,
336+ 7 * 1024
337+ ) ;
338+ assert_eq ! (
339+ mb2i. command_line_tag( ) . unwrap( ) . command_line( ) . unwrap( ) ,
340+ "test"
341+ ) ;
342+ let mut modules = mb2i. module_tags ( ) ;
343+ let module_1 = modules. next ( ) . unwrap ( ) ;
344+ assert_eq ! ( module_1. start_address( ) , 0 ) ;
345+ assert_eq ! ( module_1. end_address( ) , 1234 ) ;
346+ assert_eq ! ( module_1. cmdline( ) . unwrap( ) , "module1" ) ;
347+ let module_2 = modules. next ( ) . unwrap ( ) ;
348+ assert_eq ! ( module_2. start_address( ) , 5678 ) ;
349+ assert_eq ! ( module_2. end_address( ) , 6789 ) ;
350+ assert_eq ! ( module_2. cmdline( ) . unwrap( ) , "module2" ) ;
351+ assert ! ( modules. next( ) . is_none( ) ) ;
324352 }
325353}
0 commit comments