Fixed some half-completed work in generic drivers. Minor -x bug fixes.
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
from configparser import ConfigParser
|
||||
from pathlib import Path
|
||||
from unittest.mock import Mock
|
||||
|
||||
import pytest
|
||||
|
||||
from fenrirscreenreader.core.settingsData import settings_data
|
||||
from fenrirscreenreader.soundDriver import genericDriver
|
||||
|
||||
|
||||
class SettingsManager:
|
||||
def __init__(self, settings):
|
||||
self.settings = settings
|
||||
|
||||
def get_setting(self, section, setting):
|
||||
return self.settings[setting]
|
||||
|
||||
|
||||
def _sound_driver(settings):
|
||||
sound_driver = genericDriver.driver()
|
||||
sound_driver.initialize(
|
||||
{"runtime": {"SettingsManager": SettingsManager(settings)}}
|
||||
)
|
||||
sound_driver.set_volume(0.75)
|
||||
return sound_driver
|
||||
|
||||
|
||||
def _configured_sound_settings():
|
||||
config = ConfigParser(interpolation=None)
|
||||
config.read(Path(__file__).parents[2] / "config/settings/settings.conf")
|
||||
return {
|
||||
"generic_play_file_command": config.get(
|
||||
"sound", "generic_play_file_command"
|
||||
),
|
||||
"generic_frequency_command": config.get(
|
||||
"sound", "generic_frequency_command"
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
def test_play_frequency_replaces_snake_case_placeholders(monkeypatch):
|
||||
popen = Mock()
|
||||
monkeypatch.setattr(genericDriver.subprocess, "Popen", popen)
|
||||
sound_driver = _sound_driver(
|
||||
{
|
||||
"generic_play_file_command": "player fenrir_sound_file",
|
||||
"generic_frequency_command": (
|
||||
"tone --volume fenrir_volume --duration fenrir_duration "
|
||||
"--frequency fenrir_frequency"
|
||||
),
|
||||
}
|
||||
)
|
||||
|
||||
sound_driver.play_frequence(
|
||||
440, 0.25, adjust_volume=0.5, interrupt=False
|
||||
)
|
||||
|
||||
assert popen.call_args.args[0] == [
|
||||
"tone",
|
||||
"--volume",
|
||||
"0.375",
|
||||
"--duration",
|
||||
"0.25",
|
||||
"--frequency",
|
||||
"440",
|
||||
]
|
||||
|
||||
|
||||
def test_play_sound_file_replaces_snake_case_placeholders(
|
||||
monkeypatch, tmp_path
|
||||
):
|
||||
popen = Mock()
|
||||
monkeypatch.setattr(genericDriver.subprocess, "Popen", popen)
|
||||
sound_file = tmp_path / "sound file.ogg"
|
||||
sound_file.write_bytes(b"")
|
||||
sound_driver = _sound_driver(
|
||||
{
|
||||
"generic_play_file_command": (
|
||||
"player --volume fenrir_volume fenrir_sound_file"
|
||||
),
|
||||
"generic_frequency_command": "tone fenrir_frequency",
|
||||
}
|
||||
)
|
||||
|
||||
sound_driver.play_sound_file(str(sound_file), interrupt=False)
|
||||
|
||||
assert popen.call_args.args[0] == [
|
||||
"player",
|
||||
"--volume",
|
||||
"0.75",
|
||||
str(sound_file),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"settings",
|
||||
[settings_data["sound"], _configured_sound_settings()],
|
||||
)
|
||||
def test_default_sound_commands_use_supported_placeholders(
|
||||
monkeypatch, tmp_path, settings
|
||||
):
|
||||
popen = Mock()
|
||||
monkeypatch.setattr(genericDriver.subprocess, "Popen", popen)
|
||||
sound_file = tmp_path / "sound.ogg"
|
||||
sound_file.write_bytes(b"")
|
||||
sound_driver = _sound_driver(settings)
|
||||
|
||||
sound_driver.play_frequence(
|
||||
440, 0.25, adjust_volume=0.5, interrupt=False
|
||||
)
|
||||
sound_driver.play_sound_file(str(sound_file), interrupt=False)
|
||||
|
||||
for call in popen.call_args_list:
|
||||
assert not any("fenrir_" in argument for argument in call.args[0])
|
||||
Reference in New Issue
Block a user