92 lines
3.1 KiB
Python
92 lines
3.1 KiB
Python
import sys
|
|
import unittest
|
|
from pathlib import Path
|
|
from unittest import mock
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src"))
|
|
|
|
from cthulhu import settings
|
|
from cthulhu import speech
|
|
from cthulhu import cthulhu_state
|
|
from cthulhu.scripts import default
|
|
|
|
|
|
class SpeechDefaultPolicyRegressionTests(unittest.TestCase):
|
|
def _make_settings_manager(self):
|
|
values = {
|
|
"enableSpeech": True,
|
|
"onlySpeakDisplayedText": False,
|
|
"messagesAreDetailed": True,
|
|
"enableBraille": False,
|
|
"enableBrailleMonitor": False,
|
|
"enableFlashMessages": False,
|
|
"voices": {settings.SYSTEM_VOICE: "system"},
|
|
"capitalizationStyle": settings.CAPITALIZATION_STYLE_NONE,
|
|
"verbalizePunctuationStyle": settings.PUNCTUATION_STYLE_NONE,
|
|
}
|
|
|
|
manager = mock.Mock()
|
|
manager.getSetting.side_effect = values.get
|
|
return manager
|
|
|
|
def _make_script(self):
|
|
testScript = default.Script.__new__(default.Script)
|
|
testScript.speechAndVerbosityManager = mock.Mock()
|
|
return testScript
|
|
|
|
def test_speech_speak_queues_by_default(self):
|
|
server = mock.Mock()
|
|
|
|
with (
|
|
mock.patch.object(speech, "_speechserver", server),
|
|
mock.patch.object(speech, "_write_to_monitor"),
|
|
mock.patch.object(speech.speech_history, "add"),
|
|
mock.patch.object(cthulhu_state, "activeScript", None),
|
|
):
|
|
speech.speak("status")
|
|
|
|
server.speak.assert_called_once()
|
|
self.assertFalse(server.speak.call_args.args[2])
|
|
|
|
def test_speech_speak_explicit_interrupt_is_preserved(self):
|
|
server = mock.Mock()
|
|
|
|
with (
|
|
mock.patch.object(speech, "_speechserver", server),
|
|
mock.patch.object(speech, "_write_to_monitor"),
|
|
mock.patch.object(speech.speech_history, "add"),
|
|
mock.patch.object(cthulhu_state, "activeScript", None),
|
|
):
|
|
speech.speak("status", interrupt=True)
|
|
|
|
server.speak.assert_called_once()
|
|
self.assertTrue(server.speak.call_args.args[2])
|
|
|
|
def test_present_message_queues_by_default(self):
|
|
testScript = self._make_script()
|
|
manager = self._make_settings_manager()
|
|
|
|
with (
|
|
mock.patch.object(default.cthulhu.cthulhuApp, "settingsManager", manager),
|
|
mock.patch.object(default.speech, "speak") as speak,
|
|
):
|
|
default.Script.presentMessage(testScript, "Status")
|
|
|
|
speak.assert_called_once_with("Status", "system", False)
|
|
|
|
def test_present_message_explicit_interrupt_is_preserved(self):
|
|
testScript = self._make_script()
|
|
manager = self._make_settings_manager()
|
|
|
|
with (
|
|
mock.patch.object(default.cthulhu.cthulhuApp, "settingsManager", manager),
|
|
mock.patch.object(default.speech, "speak") as speak,
|
|
):
|
|
default.Script.presentMessage(testScript, "Status", interrupt=True)
|
|
|
|
speak.assert_called_once_with("Status", "system", True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|