from app.core.text_preprocessing import preprocess_text def test_preprocess_lowercase(): """Тестирование преобразования текста в нижний регистр.""" input_text = "ПрИвет Мир" expected = "привет мир" assert preprocess_text(input_text) == expected def test_preprocess_replace_english_letters(): """Тестирование замены похожих английских букв на русские.""" input_text = "Hello, how are you?" expected = "hello, how are you?" # В данном случае, поскольку 'H', 'e', 'l', 'o' заменяются на русские? # Но согласно ENGLISH_TO_RUSSIAN_LETTERS, 'a' -> 'а', 'c' -> 'с', 'e' -> 'е', 'o' -> 'о', 'p' -> 'р', 'x' -> 'х', 'y' -> 'у', 'B' -> 'В', 'M' -> 'М', 'T' -> 'Т' # Так как ENGLISH_TO_RUSSIAN_LETTERS не охватывает все, нужно скорректировать # Лучше использовать пример с заменяемыми буквами input_text = "Привет a, c, e, o, p, x, y" expected = "привет а, с, е, о, р, х, у" assert preprocess_text(input_text) == expected def test_preprocess_replace_digits_in_russian_word(): """Тестирование замены цифр '3' и '0' на 'з' и 'о' в словах с преобладанием русских букв.""" input_text = "Привет3 и 0дела" expected = "привет з и одела" assert preprocess_text(input_text) == expected def test_preprocess_split_letters_digits(): """Тестирование разделения букв и цифр в словах.""" input_text = "привет12 как дела" expected = "привет 12 как дела" assert preprocess_text(input_text) == expected def test_preprocess_mixed_russian_english_letters(): """Тестирование обработки слов с смешанными русскими и английскими буквами.""" input_text = "а3b0 привет12" # 'a3b0' -> 'азбо' (замена 'a'->'а', '3'->'з', '0'->'о') и затем разделение букв и цифр # Но после замены, 'a3b0' -> 'азбо', в котором нет цифр, поэтому разделения не произойдет # Возможно, другой пример: "a3b0c" -> "азбoc" -> возможно "азбоc", но это не ясно # Давайте использовать другой пример, где после замены остаются цифры input_text = "a3b0c123" # 'a3b0c123' -> 'азбоc123' (замена 'a'->'а', '3'->'з', '0'->'о'), затем разделение # Но 'c' -> 'с', по словарю 'c' -> 'с', 'a' -> 'а' # 'a3b0c123' -> 'азбос123' -> 'азбос 123' expected = "азбос 123" assert preprocess_text(input_text) == expected def test_preprocess_no_digits(): """Тестирование обработки текста без цифр.""" input_text = "как дела сегодня" expected = "как дела сегодня" assert preprocess_text(input_text) == expected def test_preprocess_digits_not_3_or_0(): """Тестирование замены цифр, отличных от '3' и '0'.""" input_text = "привет12 и 45дела" expected = "привет 12 и 45дела" # Цифры '1', '2', '4', '5' не заменяются assert preprocess_text(input_text) == expected def test_preprocess_only_digits(): """Тестирование обработки текста, состоящего только из цифр.""" input_text = "12345" expected = "12345" # Нет букв, ничего не заменяется assert preprocess_text(input_text) == expected def test_preprocess_empty_string(): """Тестирование обработки пустой строки.""" input_text = "" expected = "" assert preprocess_text(input_text) == expected def test_preprocess_special_characters(): """Тестирование обработки текста с особыми символами.""" input_text = "Привет! Как дела? a3b0c!" expected = "привет! как дела? азбоc!" # 'a3b0c' -> 'азбоc', затем разделение, но 'c' -> 'с', так что 'азбос!' # Исправленный ожидаемый результат: "привет! как дела? азбос!" expected = "привет! как дела? азбос!" assert preprocess_text(input_text) == expected def test_preprocess_multiple_spaces(): """Тестирование обработки текста с несколькими пробелами.""" input_text = "привет 12 как дела" expected = "привет 12 как дела" assert preprocess_text(input_text) == expected def test_preprocess_mixed_case_and_letters(): """Тестирование обработки текста с разными регистрами и смешанными буквами.""" input_text = "ПрИвет a3B0C и 0DEFG" # Приведение к нижнему: "привет a3b0c и 0defg" # Замена похожих букв: 'a'->'а', 'b'->'б', 'c'->'с', 'y'->'у' и т.д. # 'a3b0c' -> 'азбос' # '0defg' -> 'одефg' (замена '0'->'о', 'd','e','f','g' остаются # Но 'd','e','f','g' не заменены, так как они не в словаре # Затем разделение: 'привет азбос и odefg' expected = "привет азбос и odefg" assert preprocess_text(input_text) == expected