prns-core 0.3.4

Pure Reticulum engine and wire contract for Personal Reticulum
use super::{RouteWarmth, WarmestOf};
use crate::interfaces::InterfaceId;
use crate::units::InstantMillis;

#[test]
fn the_warmest_of_two_sources_wins() {
    struct At(u64);
    impl RouteWarmth for At {
        fn warm_until(&self, _interface: InterfaceId) -> Option<InstantMillis> {
            Some(InstantMillis(self.0))
        }
    }
    let interface = InterfaceId::new([1; 8]);
    assert_eq!(
        WarmestOf(&At(5_000), &At(9_000)).warm_until(interface),
        Some(InstantMillis(9_000)),
    );
    assert_eq!(
        WarmestOf(&(), &At(9_000)).warm_until(interface),
        Some(InstantMillis(9_000)),
    );
    assert_eq!(WarmestOf(&(), &()).warm_until(interface), None);
}