use chrono::TimeDelta;
use crate::Kwh;
use super::power_to_time;
#[test]
fn should_min() {
let dt = power_to_time(Kwh::from(0), Kwh::from(10), TimeDelta::minutes(100)).unwrap();
assert_eq!(dt, TimeDelta::minutes(0));
}
#[test]
fn should_max() {
let dt = power_to_time(Kwh::from(10), Kwh::from(10), TimeDelta::minutes(100)).unwrap();
assert_eq!(dt, TimeDelta::minutes(100));
}
#[test]
fn should_mid() {
let dt = power_to_time(Kwh::from(5), Kwh::from(10), TimeDelta::minutes(60)).unwrap();
assert_eq!(dt, TimeDelta::minutes(30));
}
#[test]
fn expect_ceiling_nanoseconds() {
let dt = power_to_time(Kwh::from(5), Kwh::from(10), TimeDelta::minutes(100)).unwrap();
assert_eq!(
dt,
TimeDelta::minutes(50)
.checked_add(&TimeDelta::nanoseconds(1))
.unwrap()
);
}
#[test]
fn should_return_none_when_exceeded() {
let dt = power_to_time(Kwh::from(11), Kwh::from(10), TimeDelta::minutes(100));
assert_eq!(dt, None);
}
#[test]
fn should_handle_zero() {
let dt = power_to_time(Kwh::from(0), Kwh::from(10), TimeDelta::minutes(100)).unwrap();
assert_eq!(dt, TimeDelta::minutes(0));
}
#[test]
fn should_handle_negative_used() {
let dt = power_to_time(Kwh::from(-10.0), Kwh::from(10), TimeDelta::minutes(100));
assert_eq!(dt, None);
}
#[test]
fn should_handle_negative_total() {
let dt = power_to_time(Kwh::from(10.0), Kwh::from(-10.0), TimeDelta::minutes(100));
assert_eq!(dt, None);
}