tiny-counter 0.1.0

Track event counts across time windows with fixed memory and fast queries
Documentation
//! Export operation tests - extracting counters from EventStore.
//!
//! Tests export_all() and export_dirty() for backup and sync scenarios.

use tiny_counter::EventStore;

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

    store.record_count("event1", 10);
    store.record_count("event2", 20);
    store.record_count("event3", 30);

    let exported = store.export_all().unwrap();

    assert_eq!(exported.len(), 3);
    assert!(exported.contains_key("event1"));
    assert!(exported.contains_key("event2"));
    assert!(exported.contains_key("event3"));
}

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

    let exported = store.export_all().unwrap();

    assert_eq!(exported.len(), 0);
}

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

    store.record_count("event1", 10);
    store.record_count("event2", 20);

    // Reset dirty flags
    store.reset_dirty();

    // Modify only event1
    store.record_count("event1", 5);

    let exported = store.export_dirty().unwrap();

    assert_eq!(exported.len(), 1);
    assert!(exported.contains_key("event1"));
    assert!(!exported.contains_key("event2"));
}

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

    store.record_count("event", 100);

    let exported = store.export_all().unwrap();
    let counter = &exported["event"];

    // Verify the exported counter has the data
    // (We can't directly query SingleEventCounter, but we can import it elsewhere)
    let _ = counter; // Use counter to avoid warning
    assert!(exported.contains_key("event"));
}