Skip to content

Commit 53ed22e

Browse files
committed
Add test for customizable resampling functions
Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
1 parent d52b3da commit 53ed22e

1 file changed

Lines changed: 55 additions & 3 deletions

File tree

src/logical_meter/logical_meter_handle.rs

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ impl LogicalMeterHandle {
186186
#[cfg(test)]
187187
mod tests {
188188
use chrono::TimeDelta;
189+
use frequenz_resampling::ResamplingFunction;
189190
use tokio_stream::{StreamExt, wrappers::BroadcastStream};
190191

191192
use crate::{
@@ -421,6 +422,57 @@ mod tests {
421422
)
422423
}
423424

425+
#[tokio::test(start_paused = true)]
426+
async fn test_resampling_functions() {
427+
let lm_config = Some(
428+
LogicalMeterConfig::new(TimeDelta::try_milliseconds(200).unwrap())
429+
.with_default_resampling_function(ResamplingFunction::Count)
430+
.override_resampling_function::<crate::metric::AcVoltage>(ResamplingFunction::Last),
431+
);
432+
let mut lm = new_logical_meter_handle(lm_config).await;
433+
let bat_volt_formula = lm.battery(None, crate::metric::AcVoltage).unwrap();
434+
435+
let samples = fetch_samples(bat_volt_formula, 10).await;
436+
check_samples(
437+
samples,
438+
|q| q.as_volts(),
439+
TimeDelta::try_milliseconds(200).unwrap(),
440+
vec![
441+
Some(400.0),
442+
Some(400.0),
443+
Some(398.0),
444+
Some(396.0),
445+
Some(396.0),
446+
Some(396.0),
447+
Some(396.0),
448+
Some(396.0),
449+
None,
450+
None,
451+
],
452+
);
453+
454+
let cons_pow_formula = lm.consumer(crate::metric::AcPowerActive).unwrap();
455+
456+
let samples = fetch_samples(cons_pow_formula, 10).await;
457+
check_samples(
458+
samples,
459+
|q| q.as_watts(),
460+
TimeDelta::try_milliseconds(200).unwrap(),
461+
vec![
462+
Some(1.0),
463+
Some(2.0),
464+
Some(3.0),
465+
Some(3.0),
466+
Some(3.0),
467+
Some(3.0),
468+
Some(2.0),
469+
Some(1.0),
470+
Some(0.0),
471+
Some(0.0),
472+
],
473+
);
474+
}
475+
424476
#[tokio::test(start_paused = true)]
425477
async fn test_consumer_current_formula() {
426478
let formula = new_logical_meter_handle(None)
@@ -478,14 +530,14 @@ mod tests {
478530
);
479531
});
480532

481-
for (v, ev) in values.iter().zip(expected_values.iter()) {
533+
for (id, (v, ev)) in values.iter().zip(expected_values.iter()).enumerate() {
482534
match (v, ev) {
483535
(Some(v), Some(ev)) => assert!(
484536
(v - ev).abs() < 0.01,
485-
"expected value {ev:?}, got value {v:?}"
537+
"Item {id} - expected value {ev:?}, got value {v:?}"
486538
),
487539
(None, None) => {}
488-
_ => panic!("expected value {ev:?}, got value {v:?}"),
540+
_ => panic!("Item {id} - expected value {ev:?}, got value {v:?}"),
489541
}
490542
}
491543
}

0 commit comments

Comments
 (0)