vigilar/tests/unit/test_package.py
Aaron D. Lee 31757f410a feat(Q5): package delivery state machine with sunset-aware reminders
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 18:46:59 -04:00

40 lines
1.6 KiB
Python

import time
from vigilar.detection.package import PackageTracker, PackageState
def test_initial_state_is_idle():
tracker = PackageTracker(camera_id="front", latitude=45.0, longitude=-85.0)
assert tracker.state == PackageState.IDLE
def test_person_detected_starts_tracking():
tracker = PackageTracker(camera_id="front", latitude=45.0, longitude=-85.0)
tracker.on_person_detected(time.time())
assert tracker._person_last_seen > 0
def test_person_departed_then_package_detected():
tracker = PackageTracker(camera_id="front", latitude=45.0, longitude=-85.0)
now = time.time()
tracker.on_person_detected(now - 60)
tracker._person_last_seen = now - 35
result = tracker.check_for_package(
detections=[{"class_id": 28, "bbox": [100, 200, 50, 50], "confidence": 0.7}], now=now)
assert result is True
assert tracker.state == PackageState.PRESENT
def test_package_collected():
tracker = PackageTracker(camera_id="front", latitude=45.0, longitude=-85.0)
now = time.time()
tracker._state = PackageState.PRESENT
tracker._package_bbox = [100, 200, 50, 50]
tracker._detected_at = now - 3600
tracker.on_person_detected(now)
collected = tracker.check_collected(detections=[], now=now)
assert collected is True
assert tracker.state == PackageState.COLLECTED
def test_reminder_time_calculation():
tracker = PackageTracker(camera_id="front", latitude=45.0, longitude=-85.0)
now = time.time()
reminder = tracker._calculate_reminder_time(now)
assert reminder >= now
assert reminder <= now + 3 * 3600 + 60