/
sapertlt
/
layout_switcher
Обзор
Документация
Войти
/
sapertlt
/
layout_switcher
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
tests/test_detector.py
62 строки
2 KB
Andrey Nikolaev
Initial commit: project setup
14 июн 2026, 23:24
14 июн 2026, 23:24
7085ffc
Код
Авторство
О чём код?
""" Тесты языкового детектора (LanguageDetector). """ import pytest import json from pathlib import Path class TestLanguageDetector: """Тесты для LanguageDetector — определение языка по N-граммам""" @pytest.fixture def detector(self): from layout_switcher.core.detector import LanguageDetector # Загружаем реальные N-граммы data_dir = Path(__file__).parent.parent / "data" / "ngrams" ngram_data = {} en_path = data_dir / "en_bigrams.json" ru_path = data_dir / "ru_bigrams.json" if en_path.exists(): with open(en_path) as f: ngram_data["en"] = json.load(f) if ru_path.exists(): with open(ru_path) as f: ngram_data["ru"] = json.load(f) return LanguageDetector(ngram_data) def test_detect_english(self, detector): """Английский текст определяется как EN""" lang, confidence = detector.detect("the quick brown fox") assert lang == "en" assert confidence > 0.5 def test_detect_russian(self, detector): """Русский текст определяется как RU""" lang, confidence = detector.detect("привет мир как дела") assert lang == "ru" assert confidence > 0.5 def test_detect_short_word(self, detector): """Короткие слова — низкая уверенность""" _, confidence = detector.detect("hi") # Для коротких слов уверенность должна быть ниже assert confidence < 0.9 def test_detect_gibberish_en(self, detector): """'ghbdtn' — это 'привет' набранный в EN раскладке. Должен определяться как 'не-английский' текст.""" lang, _ = detector.detect("ghbdtn") # Может определиться как что угодно, но не как уверенный EN # (потому что 'ghbdtn' — не настоящее английское слово) def test_detect_empty(self, detector): """Пустая строка — не вызывает ошибку""" lang, confidence = detector.detect("") assert confidence == 0.0