tiny-counter 0.1.0

Track event counts across time windows with fixed memory and fast queries
Documentation
//! Tests for .average() and .average_nonzero() query methods

use chrono::Utc;
use std::sync::Arc;
use tiny_counter::{EventStore, TestClock};

#[test]
fn query_average_aggregation() {
    let store = EventStore::new();

    store.record_count("event", 10);
    store.record_count("event", 20);
    store.record_count("event", 30);

    // Average over 1 day bucket
    let avg = store.query("event").last_days(1).average();
    assert_eq!(avg, Some(60.0)); // All in current day bucket
}

#[test]
fn query_average_nonzero() {
    let fixed_time = Utc::now();
    let clock = TestClock::build_for_testing_at(fixed_time);

    let store = EventStore::builder()
        .with_clock(Arc::new(clock.clone()))
        .track_days(7)
        .build()
        .unwrap();

    store.record_count("event", 14);

    // Only 1 bucket has data
    let avg_nonzero = store.query("event").last_days(7).average_nonzero();
    assert_eq!(avg_nonzero, Some(14.0));
}