snapshot of https://github.com/ActivityWatch/aw-core.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
Build / Test on ubuntu-latest, py-3.8 (push) Successful in 4m21s
Lint / lint (push) Successful in 25s
Build / Test on macOS-latest, py-3.8 (push) Has been cancelled
Build / Test on windows-latest, py-3.8 (push) Has been cancelled
CodeQL / Analyze (python) (push) Failing after 1s

This commit is contained in:
upstream-mirror
2026-09-16 00:17:07 +05:00
commit 8757f2fd5e
73 changed files with 8869 additions and 0 deletions

84
tests/test_heartbeat.py Normal file
View File

@@ -0,0 +1,84 @@
from datetime import datetime, timedelta
from aw_core.models import Event
from aw_transform import heartbeat_merge, heartbeat_reduce
def test_heartbeat_merge():
"""Events should merge"""
now = datetime.now()
td_1s = timedelta(seconds=1)
last_event, heartbeat = Event(timestamp=now), Event(timestamp=now + td_1s)
merged = heartbeat_merge(last_event, heartbeat, pulsetime=2)
assert merged is not None
def test_heartbeat_merge_fail():
"""Merge should not happen"""
now = datetime.now()
td_1s = timedelta(seconds=1)
# timestamp of heartbeat more than pulsetime away
last_event, heartbeat = (
Event(timestamp=now, data={"label": "test"}),
Event(timestamp=now + 3 * td_1s, data={"label": "test"}),
)
merged = heartbeat_merge(last_event, heartbeat, pulsetime=2)
assert merged is None
# labels not identical
last_event, heartbeat = (
Event(timestamp=now, data={"label": "test"}),
Event(timestamp=now + td_1s, data={"label": "test2"}),
)
merged = heartbeat_merge(last_event, heartbeat, pulsetime=2)
assert merged is None
def test_heartbeat_reduce():
"""Events should reduce"""
now = datetime.now()
td_1s = timedelta(seconds=1)
# Check that empty list works
assert not heartbeat_reduce([], pulsetime=1)
events = [
Event(timestamp=now, data={"label": "test"}),
Event(timestamp=now + td_1s, data={"label": "test"}),
]
reduced_events = heartbeat_reduce(events, pulsetime=2)
assert len(reduced_events) == 1
def test_heartbeat_same_timestamp():
now = datetime.now()
td_1s = timedelta(seconds=1)
td_0s = timedelta(seconds=0)
e1 = Event(timestamp=now, duration=td_1s, data={"label": "test"})
e2 = Event(timestamp=now, duration=td_0s, data={"label": "test"})
# Should merge
res = heartbeat_reduce(list([e1, e2]), pulsetime=5)
assert len(res) == 1
assert res[0].duration == td_1s
# Order shouldn't matter, should merge
res = heartbeat_reduce([e2, e1], pulsetime=5)
assert len(res) == 1
assert res[0].duration == td_1s
def test_heartbeat_reduce_fail():
"""Events should not reduce"""
now = datetime.now()
td_1s = timedelta(seconds=1)
events = [
Event(timestamp=now, data={"label": "test"}),
Event(timestamp=now + 3 * td_1s, data={"label": "test"}),
]
reduced_events = heartbeat_reduce(events, pulsetime=2)
assert len(reduced_events) == 2