@@ -244,7 +244,7 @@ mod tests {
244
244
}
245
245
246
246
#[ test]
247
- fn test_size_builder ( ) {
247
+ fn test_builder ( ) {
248
248
let builder = Multiboot2HeaderBuilder :: new ( HeaderTagISA :: I386 ) ;
249
249
// Multiboot2 basic header + end tag
250
250
let mut expected_len = 16 + 8 ;
@@ -274,14 +274,22 @@ mod tests {
274
274
4096 ,
275
275
RelocatableHeaderTagPreference :: None ,
276
276
) ) ;
277
+ expected_len += 0x18 ;
278
+ assert_eq ! ( builder. expected_len( ) , expected_len) ;
277
279
278
280
println ! ( "builder: {:#?}" , builder) ;
279
281
println ! ( "expected_len: {} bytes" , builder. expected_len( ) ) ;
280
282
281
283
let mb2_hdr_data = builder. build ( ) ;
282
284
let mb2_hdr = mb2_hdr_data. as_ptr ( ) as usize ;
283
- let mb2_hdr = unsafe { Multiboot2Header :: from_addr ( mb2_hdr) } ;
285
+ let mb2_hdr = unsafe { Multiboot2Header :: from_addr ( mb2_hdr) }
286
+ . expect ( "the generated header to be loadable" ) ;
284
287
println ! ( "{:#?}" , mb2_hdr) ;
288
+ assert_eq ! ( mb2_hdr. relocatable_tag( ) . unwrap( ) . flags( ) , HeaderTagFlag :: Required ) ;
289
+ assert_eq ! ( mb2_hdr. relocatable_tag( ) . unwrap( ) . min_addr( ) , 0x1337 ) ;
290
+ assert_eq ! ( mb2_hdr. relocatable_tag( ) . unwrap( ) . max_addr( ) , 0xdeadbeef ) ;
291
+ assert_eq ! ( mb2_hdr. relocatable_tag( ) . unwrap( ) . align( ) , 4096 ) ;
292
+ assert_eq ! ( mb2_hdr. relocatable_tag( ) . unwrap( ) . preference( ) , RelocatableHeaderTagPreference :: None ) ;
285
293
286
294
/* you can write the binary to a file and a tool such as crate "bootinfo"
287
295
will be able to fully parse the MB2 header
0 commit comments