use tiny_counter::EventStore;
#[test]
fn query_delta() {
let store = EventStore::new();
store.record_count("additions", 50);
store.record_count("deletions", 30);
let delta = store
.query_delta("additions", "deletions")
.last_days(1)
.sum();
assert_eq!(delta, 20);
}
#[test]
fn query_delta_negative_result() {
let store = EventStore::new();
store.record_count("additions", 30);
store.record_count("deletions", 50);
let delta = store
.query_delta("additions", "deletions")
.last_days(1)
.sum();
assert_eq!(delta, -20);
}
#[test]
fn balance_delta_basic() {
let store = EventStore::new();
store.record_count("additions", 100);
store.record_count("deletions", 30);
store.balance_delta("additions", "deletions").unwrap();
let delta = store
.query_delta("additions", "deletions")
.last_days(1)
.sum();
assert_eq!(delta, 0);
assert_eq!(store.query("additions").last_days(1).sum(), Some(100));
assert_eq!(store.query("deletions").last_days(1).sum(), Some(100));
}
#[test]
fn balance_delta_with_negative() {
let store = EventStore::new();
store.record_count("additions", 30);
store.record_count("deletions", 100);
store.balance_delta("additions", "deletions").unwrap();
let delta = store
.query_delta("additions", "deletions")
.last_days(1)
.sum();
assert_eq!(delta, 0);
assert_eq!(store.query("additions").last_days(1).sum(), Some(100));
assert_eq!(store.query("deletions").last_days(1).sum(), Some(100));
}
#[test]
fn delta_with_missing_event() {
let store = EventStore::new();
store.record_count("existing", 50);
let delta = store.query_delta("existing", "missing").last_days(1).sum();
assert_eq!(delta, 50);
}