mirror of
https://github.com/denizsafak/abogen.git
synced 2026-09-20 11:40:57 +02:00
Complete the Language enum unification (commit 0dc491e) for the PyQt
GUI, which was left resolving languages from kokoro letter codes
(voice[0]) while domain and WebUI already used Language enums.
- selected_lang is now always a Language enum: voices resolve via
language_for_voice_id(), profiles via resolve_profile_language()
- kokoro letter->Language mapping stays in the engine (new public
language_for_code()); the Language.from_code() domain shim is removed
- legacy profile files with letter codes ("a", "e", ...) are tolerated
only at the profile read boundary; new profiles save ISO codes
- conversion.py letter comparisons replaced with enum comparisons, and
SynthParams lang_code= -> language= (would TypeError at runtime)
- subtitle dropdown enabled for all languages; word-count and
highlighting modes restricted to English with auto-switch to Sentence
- tests: engine mapping + profile language resolution added; 1566 pass
28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
"""Tests for voice profile language resolution."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from abogen.domain.enums import Language
|
|
from abogen.voice_profiles import resolve_profile_language
|
|
|
|
|
|
class TestResolveProfileLanguage:
|
|
|
|
def test_iso_code(self) -> None:
|
|
assert resolve_profile_language({"language": "en-US"}) == Language.EN_US
|
|
assert resolve_profile_language({"language": "es"}) == Language.ES
|
|
|
|
def test_enum_value(self) -> None:
|
|
assert resolve_profile_language({"language": Language.ZH}) == Language.ZH
|
|
|
|
def test_legacy_kokoro_letter(self) -> None:
|
|
assert resolve_profile_language({"language": "a"}) == Language.EN_US
|
|
assert resolve_profile_language({"language": "e"}) == Language.ES
|
|
assert resolve_profile_language({"language": "z"}) == Language.ZH
|
|
|
|
def test_missing_or_unparseable_falls_back(self) -> None:
|
|
assert resolve_profile_language({}) == Language.EN_US
|
|
assert resolve_profile_language({"language": ""}) == Language.EN_US
|
|
assert resolve_profile_language({"language": "xx"}) == Language.EN_US
|
|
assert resolve_profile_language(None) == Language.EN_US
|
|
assert resolve_profile_language([]) == Language.EN_US |