Skip to content

Commit cfd9aee

Browse files
committed
multiboot2-header: Improve builder test
1 parent b4c3697 commit cfd9aee

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

multiboot2-header/src/builder/header.rs

+16-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,28 @@ 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!(
289+
mb2_hdr.relocatable_tag().unwrap().flags(),
290+
HeaderTagFlag::Required
291+
);
292+
assert_eq!(mb2_hdr.relocatable_tag().unwrap().min_addr(), 0x1337);
293+
assert_eq!(mb2_hdr.relocatable_tag().unwrap().max_addr(), 0xdeadbeef);
294+
assert_eq!(mb2_hdr.relocatable_tag().unwrap().align(), 4096);
295+
assert_eq!(
296+
mb2_hdr.relocatable_tag().unwrap().preference(),
297+
RelocatableHeaderTagPreference::None
298+
);
285299

286300
/* you can write the binary to a file and a tool such as crate "bootinfo"
287301
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)