align_part function now passing tests. #2

This commit is contained in:
2026-05-20 20:04:45 +02:00
parent edfd57d5d5
commit c0ae014eef
3 changed files with 81 additions and 6 deletions
+36 -3
View File
@@ -222,7 +222,10 @@ pub fn align_part(size: u64, start: u64, align: u64) -> Option<(u64, u64, u64)>
let align_size = align_end - align_start + 1;
if align_size < align {
println!("if align_size < align !!!!!!! align_size: {} align: {}",align_size,align);
println!(
"if align_size < align !!!!!!! align_size: {} align: {}",
align_size, align
);
return None;
}
@@ -274,10 +277,12 @@ impl PartLayout {
#[cfg(test)]
mod tests {
use rand::RngExt;
use super::*;
#[test]
fn test_align_part_fn() {
fn test_align_part_fn_joe() {
//START (S),SIZE (Z),ALIGNMENT (A),ALIGNED_START (Salign),ALIGNED_END (Ealign),Effektive Größe (Zalign)
let joes_test_data: Vec<(u64, u64, u64, u64, u64, u64)> = vec![
(0, 10000, 4096, 0, 8191, 8192),
@@ -287,11 +292,39 @@ mod tests {
(2097152, 1050000, 1048576, 2097152, 3145727, 1048576),
];
for test_data in joes_test_data {
let res = align_part(test_data.1,test_data.0,test_data.2).unwrap();
let res = align_part(test_data.1, test_data.0, test_data.2).unwrap();
let test_res = (test_data.5, test_data.3, test_data.4);
assert_eq!(res, test_res);
}
}
#[test]
fn test_align_part_fn_rand() {
for ((size, start, align), test_res) in rand::rng()
.random_iter::<u32>()
.filter(|n| *n > 0)
.take(100)
.flat_map(|align|
(0..u64::MAX)
.step_by(align as usize)
.take(1000)
.map(move |start_align| {
let mut rng = rand::rng();
let size_align = align as u64 * rng.random_range(1..u16::MAX) as u64;
let end_align = start_align + size_align - 1;
let start = start_align.saturating_sub(rng.random_range(0..align) as u64);
let size = size_align.saturating_add(rng.random_range(0..align) as u64);
(
(size, start, align as u64),
(size_align, start_align.clone(), end_align),
)
})
)
{
let res = align_part(size, start, align).unwrap();
assert_eq!(res, test_res);
}
}
}
// fn add_part(part_list: Vec<PartInfo>, rem_size: u64, part_t: PartType, )