48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
import pytest
|
|
from unittest.mock import MagicMock
|
|
from imgui_bundle import imgui
|
|
from src import theme_nerv
|
|
|
|
def test_apply_nerv_sets_rounding_and_colors(monkeypatch):
|
|
# Mock imgui on the module level to intercept calls in apply_nerv
|
|
mock_style = MagicMock()
|
|
mock_imgui = MagicMock()
|
|
mock_imgui.get_style.return_value = mock_style
|
|
# Mock ImVec4 to return its arguments as a tuple to verify values
|
|
mock_imgui.ImVec4.side_effect = lambda r, g, b, a=1.0: (r, g, b, a)
|
|
|
|
monkeypatch.setattr(theme_nerv, "imgui", mock_imgui)
|
|
|
|
# Call apply_nerv
|
|
theme_nerv.apply_nerv()
|
|
|
|
# Verify rounding styles (must be 0.0 for NERV theme)
|
|
assert mock_style.window_rounding == 0.0
|
|
assert mock_style.child_rounding == 0.0
|
|
assert mock_style.frame_rounding == 0.0
|
|
assert mock_style.popup_rounding == 0.0
|
|
assert mock_style.scrollbar_rounding == 0.0
|
|
assert mock_style.grab_rounding == 0.0
|
|
assert mock_style.tab_rounding == 0.0
|
|
|
|
# Verify borders
|
|
assert mock_style.window_border_size == 1.0
|
|
assert mock_style.frame_border_size == 1.0
|
|
assert mock_style.popup_border_size == 1.0
|
|
assert mock_style.child_border_size == 1.0
|
|
assert mock_style.tab_border_size == 1.0
|
|
|
|
# Verify key colors
|
|
# window_bg should be BLACK (0, 0, 0, 1.0)
|
|
# text should be NERV_ORANGE (255/255.0, 152/255.0, 48/255.0, 1.0)
|
|
|
|
# Extract calls to set_color_
|
|
# Using real imgui.Col_ values for keys because they are bound in NERV_PALETTE at import time
|
|
color_calls = {call[0][0]: call[0][1] for call in mock_style.set_color_.call_args_list}
|
|
|
|
assert imgui.Col_.window_bg in color_calls
|
|
assert color_calls[imgui.Col_.window_bg] == (0.0, 0.0, 0.0, 1.0)
|
|
|
|
assert imgui.Col_.text in color_calls
|
|
assert color_calls[imgui.Col_.text] == (1.0, 152/255.0, 48/255.0, 1.0)
|