40 lines
1.6 KiB
Python
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
|