SahilCodevally's picture
Init commit
e1c010e
Raw History Blame Contribute Delete
2.13 kB
"""
Tests for the Vision Module — ObjectDetector.
"""
import numpy as np
import pytest
class TestObjectDetector:
"""Tests for ObjectDetector.detect() method."""
def test_detect_returns_list(self):
"""Detection should return a list."""
from src.vision.detector import ObjectDetector
detector = ObjectDetector(model_name="yolov8n.pt", confidence=0.25)
# Create a synthetic test image (solid blue, 480x640)
image = np.zeros((480, 640, 3), dtype=np.uint8)
image[:, :] = (200, 100, 50)
result = detector.detect(image)
assert isinstance(result, list), "detect() must return a list"
def test_detect_result_schema(self):
"""Each detection should have label, confidence, and bbox keys."""
from src.vision.detector import ObjectDetector
detector = ObjectDetector(model_name="yolov8n.pt", confidence=0.25)
# Use a real-ish image to maybe get detections
image = np.random.randint(0, 255, (480, 640, 3), dtype=np.uint8)
result = detector.detect(image)
for det in result:
assert "label" in det, "Detection must have 'label'"
assert "confidence" in det, "Detection must have 'confidence'"
assert "bbox" in det, "Detection must have 'bbox'"
assert isinstance(det["label"], str)
assert isinstance(det["confidence"], float)
assert isinstance(det["bbox"], list)
assert len(det["bbox"]) == 4
def test_detect_invalid_image_raises(self):
"""Passing None should raise ValueError."""
from src.vision.detector import ObjectDetector
detector = ObjectDetector(model_name="yolov8n.pt", confidence=0.25)
with pytest.raises(ValueError):
detector.detect(None)
def test_detect_1d_image_raises(self):
"""Passing a 1D array should raise ValueError."""
from src.vision.detector import ObjectDetector
detector = ObjectDetector(model_name="yolov8n.pt", confidence=0.25)
with pytest.raises(ValueError):
detector.detect(np.array([1, 2, 3]))