Skip to content

Commit 013f5b8

Browse files
committed
multiboot2: Improve biulder test
1 parent cbc47ab commit 013f5b8

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

multiboot2/src/builder/information.rs

+26-3
Original file line numberDiff line numberDiff line change
@@ -300,26 +300,49 @@ 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) }
332+
.expect("the generated information to be readable");
323333
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());
324347
}
325348
}

0 commit comments

Comments
 (0)