Files
AI-Video/tests/test_feature_extractor.py
empty 56db9bf9d2 feat: Add hybrid quality evaluation system with CLIP and VLM support
- Add FeatureExtractor for CLIP-based image/text feature extraction
- Add ObjectiveMetricsCalculator for technical quality metrics
- Add VLMEvaluator for vision language model evaluation
- Add HybridQualityGate combining objective + VLM evaluation
- Enhance CharacterMemory with visual feature support
- Add quality optional dependency (torch, ftfy, regex)
- Add unit tests for new modules

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 15:56:44 +08:00

48 lines
1.4 KiB
Python

# Copyright (C) 2025 AIDC-AI
# Tests for FeatureExtractor
import pytest
from pixelle_video.services.quality.feature_extractor import (
FeatureExtractor,
FeatureExtractorConfig,
)
class TestFeatureExtractorConfig:
"""Tests for FeatureExtractorConfig"""
def test_default_values(self):
config = FeatureExtractorConfig()
assert config.model_name == "ViT-B/32"
assert config.device == "auto"
assert config.cache_features is True
class TestFeatureExtractor:
"""Tests for FeatureExtractor"""
def test_init_default(self):
extractor = FeatureExtractor()
assert extractor.config.model_name == "ViT-B/32"
def test_is_available_check(self):
"""Test availability check (may be True or False)"""
extractor = FeatureExtractor()
# Just check it returns a boolean
assert isinstance(extractor.is_available, bool)
def test_extract_without_clip(self):
"""Test graceful degradation when CLIP unavailable"""
extractor = FeatureExtractor()
if not extractor.is_available:
result = extractor.extract_image_features("/fake/path.png")
assert result is None
def test_clear_cache(self):
"""Test cache clearing"""
extractor = FeatureExtractor()
extractor._feature_cache["test"] = "value"
extractor.clear_cache()
assert len(extractor._feature_cache) == 0