align_part function now passing tests. #2
This commit is contained in:
+36
-3
@@ -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, )
|
||||
|
||||
Reference in New Issue
Block a user