summaryrefslogtreecommitdiff
path: root/tests/test_configuration.py
blob: a7f80b49fdf2356f4d6a89e7437608454e3a2687 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
"""
Tests for the configuration service.
"""

import tempfile
from pathlib import Path
from unittest.mock import Mock

from lsfg_vk.configuration import ConfigurationService


def test_parse_script_content():
    """Test parsing of script content"""
    mock_logger = Mock()
    
    with tempfile.TemporaryDirectory() as temp_dir:
        temp_home = Path(temp_dir)
        
        # Create service with mocked home directory
        service = ConfigurationService(logger=mock_logger)
        service.user_home = temp_home
        service.lsfg_script_path = temp_home / "lsfg"
        
        # Test script content
        script_content = """#!/bin/bash

export ENABLE_LSFG=1
export LSFG_MULTIPLIER=3
export LSFG_FLOW_SCALE=1.5
export LSFG_HDR=1
# export LSFG_PERF_MODE=1
export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync

exec "$@"
"""
        
        config = service._parse_script_content(script_content)
        
        assert config["enable_lsfg"] is True
        assert config["multiplier"] == 3
        assert config["flow_scale"] == 1.5
        assert config["hdr"] is True
        assert config["perf_mode"] is False  # commented out
        assert config["immediate_mode"] is True


def test_parse_script_content_all_commented():
    """Test parsing when all optional features are commented out"""
    mock_logger = Mock()
    
    with tempfile.TemporaryDirectory() as temp_dir:
        temp_home = Path(temp_dir)
        
        service = ConfigurationService(logger=mock_logger)
        service.user_home = temp_home
        service.lsfg_script_path = temp_home / "lsfg"
        
        script_content = """#!/bin/bash

# export ENABLE_LSFG=1
export LSFG_MULTIPLIER=2
export LSFG_FLOW_SCALE=1.0
# export LSFG_HDR=1
# export LSFG_PERF_MODE=1
# export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync

exec "$@"
"""
        
        config = service._parse_script_content(script_content)
        
        assert config["enable_lsfg"] is False
        assert config["multiplier"] == 2
        assert config["flow_scale"] == 1.0
        assert config["hdr"] is False
        assert config["perf_mode"] is False
        assert config["immediate_mode"] is False


def test_generate_script_content():
    """Test script content generation"""
    mock_logger = Mock()
    
    with tempfile.TemporaryDirectory() as temp_dir:
        temp_home = Path(temp_dir)
        
        service = ConfigurationService(logger=mock_logger)
        service.user_home = temp_home
        service.lsfg_script_path = temp_home / "lsfg"
        
        content = service._generate_script_content(
            enable_lsfg=True,
            multiplier=4,
            flow_scale=2.0,
            hdr=False,
            perf_mode=True,
            immediate_mode=False
        )
        
        assert "export ENABLE_LSFG=1" in content
        assert "export LSFG_MULTIPLIER=4" in content
        assert "export LSFG_FLOW_SCALE=2.0" in content
        assert "# export LSFG_HDR=1" in content
        assert "export LSFG_PERF_MODE=1" in content
        assert "# export MESA_VK_WSI_PRESENT_MODE=immediate" in content


def test_config_roundtrip():
    """Test that we can write config and read it back correctly"""
    mock_logger = Mock()
    
    with tempfile.TemporaryDirectory() as temp_dir:
        temp_home = Path(temp_dir)
        
        service = ConfigurationService(logger=mock_logger)
        service.user_home = temp_home
        service.lsfg_script_path = temp_home / "lsfg"
        
        # Update config
        result = service.update_config(
            enable_lsfg=True,
            multiplier=3,
            flow_scale=1.5,
            hdr=True,
            perf_mode=False,
            immediate_mode=True
        )
        
        assert result["success"] is True
        
        # Read it back
        read_result = service.get_config()
        
        assert read_result["success"] is True
        config = read_result["config"]
        
        assert config["enable_lsfg"] is True
        assert config["multiplier"] == 3
        assert config["flow_scale"] == 1.5
        assert config["hdr"] is True
        assert config["perf_mode"] is False
        assert config["immediate_mode"] is True