prns-core 0.3.4

Pure Reticulum engine and wire contract for Personal Reticulum
#[cfg(feature = "std")]
use super::{RoaringRouteExpiryIndex, RouteExpiryIndex};
#[cfg(feature = "std")]
use crate::units::InstantMillis;

#[cfg(feature = "std")]
#[test]
fn route_adapter_preserves_exact_queries_and_lazy_rebuilds() {
    let index = RoaringRouteExpiryIndex::default();
    let mut values = [
        InstantMillis(599_000),
        InstantMillis(301_000),
        InstantMillis(300_500),
        InstantMillis(900_000),
    ];
    for (row, expiry) in values.iter().copied().enumerate() {
        index.insert(row, expiry);
    }
    assert_eq!(
        index.earliest_exact(values.len(), |row| values[row]),
        Some(InstantMillis(300_500)),
    );
    values[2] = InstantMillis(1_200_000);
    index.invalidate();
    assert_eq!(
        index.earliest_exact(values.len(), |row| values[row]),
        Some(InstantMillis(301_000)),
    );
}