add unit test and fix bug found with the unit test
This commit is contained in:
parent
a42006ef14
commit
6261380180
1 changed files with 37 additions and 2 deletions
|
@ -18,6 +18,7 @@ pub enum Size {
|
||||||
RemainderMinimum(f32),
|
RemainderMinimum(f32),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
pub struct Sizing {
|
pub struct Sizing {
|
||||||
sizes: Vec<Size>,
|
sizes: Vec<Size>,
|
||||||
}
|
}
|
||||||
|
@ -64,11 +65,16 @@ impl Sizing {
|
||||||
self.sizes.iter().for_each(|size| {
|
self.sizes.iter().for_each(|size| {
|
||||||
if let Size::RemainderMinimum(minimum) = size {
|
if let Size::RemainderMinimum(minimum) = size {
|
||||||
if *minimum > avg_remainder_length {
|
if *minimum > avg_remainder_length {
|
||||||
remainder_length -= minimum - avg_remainder_length;
|
remainder_length -= minimum;
|
||||||
|
remainders -= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
0.0f32.max(remainder_length / remainders as f32)
|
if remainders > 0 {
|
||||||
|
0.0f32.max(remainder_length / remainders as f32)
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
self.sizes
|
self.sizes
|
||||||
|
@ -83,3 +89,32 @@ impl Sizing {
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<Vec<Size>> for Sizing {
|
||||||
|
fn from(sizes: Vec<Size>) -> Self {
|
||||||
|
Self { sizes }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_sizing() {
|
||||||
|
let sizing: Sizing = vec![Size::RemainderMinimum(20.0), Size::Remainder].into();
|
||||||
|
assert_eq!(sizing.clone().into_lengths(50.0, 0.0), vec![25.0, 25.0]);
|
||||||
|
assert_eq!(sizing.clone().into_lengths(30.0, 0.0), vec![20.0, 10.0]);
|
||||||
|
assert_eq!(sizing.clone().into_lengths(20.0, 0.0), vec![20.0, 0.0]);
|
||||||
|
assert_eq!(sizing.clone().into_lengths(10.0, 0.0), vec![20.0, 0.0]);
|
||||||
|
assert_eq!(sizing.into_lengths(20.0, 10.0), vec![20.0, 0.0]);
|
||||||
|
|
||||||
|
let sizing: Sizing = vec![
|
||||||
|
Size::RelativeMinimum {
|
||||||
|
relative: 0.5,
|
||||||
|
minimum: 10.0,
|
||||||
|
},
|
||||||
|
Size::Absolute(10.0),
|
||||||
|
]
|
||||||
|
.into();
|
||||||
|
assert_eq!(sizing.clone().into_lengths(50.0, 0.0), vec![25.0, 10.0]);
|
||||||
|
assert_eq!(sizing.clone().into_lengths(30.0, 0.0), vec![15.0, 10.0]);
|
||||||
|
assert_eq!(sizing.clone().into_lengths(20.0, 0.0), vec![10.0, 10.0]);
|
||||||
|
assert_eq!(sizing.into_lengths(10.0, 0.0), vec![10.0, 10.0]);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue