BIAF-offASR / testcase /backend /test_models_unit.py
froster02's picture
refactor: code cleanup and App.jsx component split
3496381
import pytest
import os
import sys
import shutil
import tempfile
# Ensure backend is in path
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))
if BASE_DIR not in sys.path:
sys.path.insert(0, BASE_DIR)
import backend.models
from backend.models import ModelManager
@pytest.fixture
def temp_models_dir():
"""Create a temporary directory for models."""
temp_dir = tempfile.mkdtemp()
yield temp_dir
shutil.rmtree(temp_dir)
@pytest.fixture
def model_manager(temp_models_dir):
"""Initialize ModelManager with a temporary cache directory."""
return ModelManager(cache_dir=temp_models_dir)
def test_model_manager_init(temp_models_dir):
"""Test initialization and device selection."""
manager = ModelManager(cache_dir=temp_models_dir)
assert manager.cache_dir == os.path.abspath(temp_models_dir)
assert manager.device in ["cuda", "mps", "cpu"]
assert os.environ["HF_HOME"] == os.path.join(os.path.abspath(temp_models_dir), "hf_cache")
def test_translate_empty_text(model_manager):
"""should_return_empty_string_when_empty_text_provided"""
assert model_manager.translate("", "English", "Hindi") == ""
assert model_manager.translate(" ", "English", "Hindi") == ""
def test_translate_unsupported_language(model_manager):
"""should_raise_value_error_when_unsupported_language_provided"""
with pytest.raises(ValueError, match="Unsupported translation languages"):
model_manager.translate("Hello", "English", "Spanish")
def test_translate_same_language(model_manager):
"""should_return_original_text_when_src_and_tgt_lang_are_same"""
text = "Hello world"
assert model_manager.translate(text, "English", "English") == text
def test_translate_batch_empty_list(model_manager):
"""should_return_empty_list_when_empty_list_provided"""
assert model_manager.translate_batch([], "English", "Hindi") == []
def test_translate_batch_whitespace_only(model_manager):
"""should_preserve_whitespace_when_batch_translating"""
texts = ["", " ", "\t"]
results = model_manager.translate_batch(texts, "English", "Hindi")
assert results == texts
def test_tts_empty_text(model_manager):
"""should_raise_value_error_when_empty_text_provided_for_tts"""
with pytest.raises(ValueError, match="Empty text provided for TTS"):
model_manager.text_to_speech("", "English", "out.wav")
def test_tts_unsupported_language(model_manager):
"""should_raise_value_error_when_unsupported_language_provided_for_tts"""
with pytest.raises(ValueError, match="Unsupported TTS language"):
model_manager.text_to_speech("Hello", "Spanish", "out.wav")