WIP
This commit is contained in:
@@ -68,10 +68,7 @@ fn exp_u64<'a>(
|
|||||||
}
|
}
|
||||||
if let (Some(val), Some(exp)) = (a, b) {
|
if let (Some(val), Some(exp)) = (a, b) {
|
||||||
if val != exp {
|
if val != exp {
|
||||||
return Err(Error::AssertMsg(format!(
|
return Err(Error::AssertMsg(format!("{tag} expect value {} vs {}", val, exp)));
|
||||||
"{tag} expect close value {} vs {}",
|
|
||||||
val, exp
|
|
||||||
)));
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return Err(Error::AssertMsg(format!("{tag} len mismatch")));
|
return Err(Error::AssertMsg(format!("{tag} len mismatch")));
|
||||||
@@ -97,7 +94,7 @@ fn exp_avgs(bins: &ContainerBins<f32>, exps: impl IntoVecDequeF32) -> Result<(),
|
|||||||
if let (Some(a), Some(&exp)) = (a, b) {
|
if let (Some(a), Some(&exp)) = (a, b) {
|
||||||
let val = *a.avg as f32;
|
let val = *a.avg as f32;
|
||||||
if netpod::f32_close(val, exp) == false {
|
if netpod::f32_close(val, exp) == false {
|
||||||
return Err(Error::AssertMsg(format!("expect close value {} vs {}", val, exp)));
|
return Err(Error::AssertMsg(format!("expect value {} vs {}", val, exp)));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return Err(Error::AssertMsg(format!(
|
return Err(Error::AssertMsg(format!(
|
||||||
@@ -260,6 +257,90 @@ fn test_bin_events_f32_small_range_final() -> Result<(), Error> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_bin_events_f32_small_intermittent_silence_range_open() -> Result<(), Error> {
|
||||||
|
let beg = TsNano::from_ms(100);
|
||||||
|
let end = TsNano::from_ms(150);
|
||||||
|
let nano_range = NanoRange {
|
||||||
|
beg: beg.ns(),
|
||||||
|
end: end.ns(),
|
||||||
|
};
|
||||||
|
let range = BinnedRange::from_nano_range(nano_range, DtMs::from_ms_u64(10));
|
||||||
|
let mut binner = BinnedEventsTimeweight::new(range);
|
||||||
|
let mut evs = ContainerEvents::<f32>::new();
|
||||||
|
let em = &mut evs;
|
||||||
|
pu(em, 102, 2.0);
|
||||||
|
pu(em, 104, 2.4);
|
||||||
|
binner.ingest(evs)?;
|
||||||
|
let mut evs = ContainerEvents::<f32>::new();
|
||||||
|
let em = &mut evs;
|
||||||
|
pu(em, 111, 1.0);
|
||||||
|
pu(em, 112, 1.2);
|
||||||
|
binner.ingest(evs)?;
|
||||||
|
// TODO take bins already here and assert.
|
||||||
|
// TODO combine all bins together for combined assert.
|
||||||
|
let mut evs = ContainerEvents::<f32>::new();
|
||||||
|
let em = &mut evs;
|
||||||
|
pu(em, 113, 1.4);
|
||||||
|
pu(em, 146, 1.3);
|
||||||
|
pu(em, 148, 1.2);
|
||||||
|
binner.ingest(evs)?;
|
||||||
|
binner.input_done_range_open()?;
|
||||||
|
let bins = binner.output();
|
||||||
|
trace!("{bins:?}");
|
||||||
|
for b in bins.iter_debug() {
|
||||||
|
trace!("{b:?}");
|
||||||
|
}
|
||||||
|
assert_eq!(bins.len(), 5);
|
||||||
|
exp_cnts(&bins, "2 3 0 0 2")?;
|
||||||
|
exp_avgs(&bins, "2.30 1.44 1.4 1.4 1.375")?;
|
||||||
|
let bins = binner.output();
|
||||||
|
assert_eq!(bins.len(), 0);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_bin_events_f32_small_intermittent_silence_range_final() -> Result<(), Error> {
|
||||||
|
let beg = TsNano::from_ms(100);
|
||||||
|
let end = TsNano::from_ms(150);
|
||||||
|
let nano_range = NanoRange {
|
||||||
|
beg: beg.ns(),
|
||||||
|
end: end.ns(),
|
||||||
|
};
|
||||||
|
let range = BinnedRange::from_nano_range(nano_range, DtMs::from_ms_u64(10));
|
||||||
|
let mut binner = BinnedEventsTimeweight::new(range);
|
||||||
|
let mut evs = ContainerEvents::<f32>::new();
|
||||||
|
let em = &mut evs;
|
||||||
|
pu(em, 102, 2.0);
|
||||||
|
pu(em, 104, 2.4);
|
||||||
|
binner.ingest(evs)?;
|
||||||
|
let mut evs = ContainerEvents::<f32>::new();
|
||||||
|
let em = &mut evs;
|
||||||
|
pu(em, 111, 1.0);
|
||||||
|
pu(em, 112, 1.2);
|
||||||
|
binner.ingest(evs)?;
|
||||||
|
// TODO take bins already here and assert.
|
||||||
|
// TODO combine all bins together for combined assert.
|
||||||
|
let mut evs = ContainerEvents::<f32>::new();
|
||||||
|
let em = &mut evs;
|
||||||
|
pu(em, 113, 1.4);
|
||||||
|
pu(em, 146, 1.3);
|
||||||
|
pu(em, 148, 1.2);
|
||||||
|
binner.ingest(evs)?;
|
||||||
|
binner.input_done_range_final()?;
|
||||||
|
let bins = binner.output();
|
||||||
|
trace!("{bins:?}");
|
||||||
|
for b in bins.iter_debug() {
|
||||||
|
trace!("{b:?}");
|
||||||
|
}
|
||||||
|
assert_eq!(bins.len(), 5);
|
||||||
|
exp_cnts(&bins, "2 3 0 0 2")?;
|
||||||
|
exp_avgs(&bins, "2.30 1.44 1.4 1.4 1.34")?;
|
||||||
|
let bins = binner.output();
|
||||||
|
assert_eq!(bins.len(), 0);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_bin_events_enum_simple_range_final() -> Result<(), Error> {
|
fn test_bin_events_enum_simple_range_final() -> Result<(), Error> {
|
||||||
let beg = TsNano::from_ms(100);
|
let beg = TsNano::from_ms(100);
|
||||||
|
|||||||
Reference in New Issue
Block a user