57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
import pytest
|
|
from pathlib import Path
|
|
from cursor_flasher.config import Config, load_config, DEFAULT_CONFIG_PATH
|
|
|
|
|
|
class TestDefaultConfig:
|
|
def test_has_pulse_settings(self):
|
|
cfg = Config()
|
|
assert cfg.pulse_color == "#FF9500"
|
|
assert cfg.pulse_width == 4
|
|
assert cfg.pulse_speed == 1.5
|
|
assert cfg.pulse_opacity_min == 0.3
|
|
assert cfg.pulse_opacity_max == 1.0
|
|
|
|
def test_has_sound_settings(self):
|
|
cfg = Config()
|
|
assert cfg.sound_enabled is True
|
|
assert cfg.sound_name == "Glass"
|
|
assert cfg.sound_volume == 0.5
|
|
|
|
def test_has_detection_settings(self):
|
|
cfg = Config()
|
|
assert cfg.poll_interval == 0.5
|
|
assert cfg.cooldown == 3.0
|
|
|
|
def test_has_timeout_settings(self):
|
|
cfg = Config()
|
|
assert cfg.auto_dismiss == 300
|
|
|
|
|
|
class TestLoadConfig:
|
|
def test_loads_from_yaml(self, tmp_path):
|
|
config_file = tmp_path / "config.yaml"
|
|
config_file.write_text(
|
|
"pulse:\n"
|
|
' color: "#00FF00"\n'
|
|
" width: 8\n"
|
|
"sound:\n"
|
|
" enabled: false\n"
|
|
)
|
|
cfg = load_config(config_file)
|
|
assert cfg.pulse_color == "#00FF00"
|
|
assert cfg.pulse_width == 8
|
|
assert cfg.sound_enabled is False
|
|
assert cfg.pulse_speed == 1.5
|
|
assert cfg.sound_name == "Glass"
|
|
|
|
def test_missing_file_returns_defaults(self, tmp_path):
|
|
cfg = load_config(tmp_path / "nonexistent.yaml")
|
|
assert cfg.pulse_color == "#FF9500"
|
|
|
|
def test_empty_file_returns_defaults(self, tmp_path):
|
|
config_file = tmp_path / "config.yaml"
|
|
config_file.write_text("")
|
|
cfg = load_config(config_file)
|
|
assert cfg.pulse_color == "#FF9500"
|