91 lines
2.5 KiB
Python
91 lines
2.5 KiB
Python
from types import SimpleNamespace
|
|
from unittest.mock import Mock
|
|
|
|
from fenrirscreenreader.commands.commands import voice_browser
|
|
from fenrirscreenreader.commands.commands import voice_browser_safe
|
|
from fenrirscreenreader.core import dynamicVoiceMenu
|
|
from fenrirscreenreader.core.quickMenuManager import SpeechHelperMixin
|
|
from fenrirscreenreader.utils.speechd_utils import get_synthesis_voice_name
|
|
|
|
|
|
VOICE_LIST = (
|
|
" NAME LANGUAGE VARIANT\n"
|
|
" Perfect Paul en-US none\n"
|
|
" Big Bob en-US none\n"
|
|
)
|
|
|
|
|
|
def completed_voice_list():
|
|
return SimpleNamespace(returncode=0, stdout=VOICE_LIST)
|
|
|
|
|
|
def test_quick_menu_preserves_multiword_synthesis_voice_names(monkeypatch):
|
|
monkeypatch.setattr(
|
|
"fenrirscreenreader.core.quickMenuManager.subprocess.run",
|
|
Mock(return_value=completed_voice_list()),
|
|
)
|
|
helper = SpeechHelperMixin()
|
|
helper.env = {"runtime": {"DebugManager": Mock()}}
|
|
|
|
assert helper.get_module_voices("doubletalk") == [
|
|
"Perfect Paul",
|
|
"Big Bob",
|
|
]
|
|
|
|
|
|
def test_safe_voice_browser_preserves_multiword_synthesis_voice_names(
|
|
monkeypatch,
|
|
):
|
|
monkeypatch.setattr(
|
|
voice_browser_safe.subprocess,
|
|
"run",
|
|
Mock(return_value=completed_voice_list()),
|
|
)
|
|
browser = voice_browser_safe.command()
|
|
browser.initialize({"runtime": {}})
|
|
|
|
assert browser.get_module_voices_with_timeout("doubletalk") == [
|
|
"Perfect Paul",
|
|
"Big Bob",
|
|
]
|
|
|
|
|
|
def test_interactive_voice_browser_preserves_multiword_synthesis_voice_names(
|
|
monkeypatch,
|
|
):
|
|
monkeypatch.setattr(
|
|
voice_browser.subprocess,
|
|
"run",
|
|
Mock(return_value=completed_voice_list()),
|
|
)
|
|
browser = voice_browser.command()
|
|
|
|
assert browser.get_module_voices("doubletalk") == [
|
|
"Perfect Paul",
|
|
"Big Bob",
|
|
]
|
|
|
|
|
|
def test_dynamic_voice_menu_preserves_multiword_synthesis_voice_names(
|
|
monkeypatch,
|
|
):
|
|
monkeypatch.setattr(
|
|
dynamicVoiceMenu.subprocess,
|
|
"run",
|
|
Mock(return_value=completed_voice_list()),
|
|
)
|
|
|
|
assert dynamicVoiceMenu.get_module_voices("doubletalk") == [
|
|
"Perfect Paul",
|
|
"Big Bob",
|
|
]
|
|
|
|
|
|
def test_espeak_voice_selection_keeps_language_and_variant_behavior():
|
|
voice = get_synthesis_voice_name(
|
|
"espeak-ng",
|
|
"English (America)+female3 en-US female3",
|
|
)
|
|
|
|
assert voice == "en-us+female3"
|