Add pet ID classifier with species-filtered identification
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
49
tests/unit/test_pet_id.py
Normal file
49
tests/unit/test_pet_id.py
Normal file
@@ -0,0 +1,49 @@
|
||||
"""Tests for pet ID classifier."""
|
||||
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
from vigilar.detection.pet_id import PetIDClassifier, PetIDResult
|
||||
|
||||
|
||||
class TestPetIDResult:
|
||||
def test_identified(self):
|
||||
r = PetIDResult(pet_id="pet-1", pet_name="Angel", confidence=0.9)
|
||||
assert r.is_identified
|
||||
assert not r.is_low_confidence
|
||||
|
||||
def test_low_confidence(self):
|
||||
r = PetIDResult(pet_id="pet-1", pet_name="Angel", confidence=0.6)
|
||||
assert r.is_identified
|
||||
assert r.is_low_confidence
|
||||
|
||||
def test_unknown(self):
|
||||
r = PetIDResult(pet_id=None, pet_name=None, confidence=0.3)
|
||||
assert not r.is_identified
|
||||
|
||||
|
||||
class TestPetIDClassifier:
|
||||
def test_not_loaded_returns_unknown(self):
|
||||
classifier = PetIDClassifier(model_path="nonexistent.pt")
|
||||
assert not classifier.is_loaded
|
||||
crop = np.zeros((224, 224, 3), dtype=np.uint8)
|
||||
result = classifier.identify(crop, species="cat")
|
||||
assert not result.is_identified
|
||||
|
||||
def test_no_pets_registered_returns_unknown(self):
|
||||
classifier = PetIDClassifier(model_path="nonexistent.pt")
|
||||
assert classifier.pet_count == 0
|
||||
|
||||
def test_register_pet(self):
|
||||
classifier = PetIDClassifier(model_path="nonexistent.pt")
|
||||
classifier.register_pet("pet-1", "Angel", "cat")
|
||||
classifier.register_pet("pet-2", "Milo", "dog")
|
||||
assert classifier.pet_count == 2
|
||||
|
||||
def test_species_filter(self):
|
||||
classifier = PetIDClassifier(model_path="nonexistent.pt")
|
||||
classifier.register_pet("pet-1", "Angel", "cat")
|
||||
classifier.register_pet("pet-2", "Taquito", "cat")
|
||||
classifier.register_pet("pet-3", "Milo", "dog")
|
||||
assert len(classifier.get_pets_by_species("cat")) == 2
|
||||
assert len(classifier.get_pets_by_species("dog")) == 1
|
||||
Reference in New Issue
Block a user