Skip to content

Commit da099ba

Browse files
committed
multiboot2-header: Improve builder test
1 parent 013f5b8 commit da099ba

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

multiboot2-header/src/builder/header.rs

+10-2
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ mod tests {
244244
}
245245

246246
#[test]
247-
fn test_size_builder() {
247+
fn test_builder() {
248248
let builder = Multiboot2HeaderBuilder::new(HeaderTagISA::I386);
249249
// Multiboot2 basic header + end tag
250250
let mut expected_len = 16 + 8;
@@ -274,14 +274,22 @@ mod tests {
274274
4096,
275275
RelocatableHeaderTagPreference::None,
276276
));
277+
expected_len += 0x18;
278+
assert_eq!(builder.expected_len(), expected_len);
277279

278280
println!("builder: {:#?}", builder);
279281
println!("expected_len: {} bytes", builder.expected_len());
280282

281283
let mb2_hdr_data = builder.build();
282284
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");
284287
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);
285293

286294
/* you can write the binary to a file and a tool such as crate "bootinfo"
287295
will be able to fully parse the MB2 header

multiboot2-header/src/relocatable.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use core::mem::size_of;
88
/// but not lower than min addr and ‘2’ means load image at highest possible
99
/// address but not higher than max addr.
1010
#[repr(u32)]
11-
#[derive(Copy, Clone, Debug)]
11+
#[derive(Copy, Clone, Debug, PartialEq)]
1212
pub enum RelocatableHeaderTagPreference {
1313
/// Let boot loader decide.
1414
None = 0,

0 commit comments

Comments
 (0)