Update tests/test_utils_snapshot.py
Run CI Tests / test (push) Successful in 31s

This commit is contained in:
2025-07-30 01:24:38 +02:00
parent 3c525c85f7
commit b702759efb
+27 -35
View File
@@ -1,15 +1,13 @@
import pytest
from slic.utils.snapshot import snapshot
from slic.utils import registry
from slic.core.adjustable import Adjustable
from unittest.mock import patch
from slic.utils.registry import instances
from slic.utils.snapshot import snapshot
from slic.core.adjustable import Adjustable
# --- Fake Adjustable class for testing ---
class FakeAdjustable(Adjustable):
def __init__(self, ID, name=None, internal=False):
super().__init__(ID=ID, name=name or ID, internal=internal)
self._value = 0 # dummy fixed value for all instances
self._value = 0
def get_current_value(self):
return self._value
@@ -26,58 +24,52 @@ class FakeAdjustable(Adjustable):
def set_target_value(self, value, *args, **kwargs):
return value
@pytest.fixture(autouse=True)
def clean_registry():
instances.cache_clear()
def test_snapshot_excludes_internal_by_default():
visible = FakeAdjustable("visible", internal=False)
hidden = FakeAdjustable("internal", internal=True)
visible = FakeAdjustable("vis_id", "visible", False)
hidden = FakeAdjustable("hid_id", "internal", True)
with patch('slic.utils.registry.instances', return_value=[visible, hidden]):
result = snapshot()
assert len(result) == 1
assert visible in result
assert hidden not in result
def test_snapshot_include_internal_flag():
visible = FakeAdjustable("visible", internal=False)
hidden = FakeAdjustable("internal", internal=True)
visible = FakeAdjustable("vis_id", "visible", False)
hidden = FakeAdjustable("hid_id", "internal", True)
with patch('slic.utils.registry.instances', return_value=[visible, hidden]):
result = snapshot(include_internal=True)
assert len(result) == 2
assert visible in result
assert hidden in result
assert len(result) == 2
def test_snapshot_empty_result():
with patch('slic.utils.registry.instances', return_value=[]):
result = snapshot()
assert isinstance(result, list)
assert result == []
# Sort key tests
@pytest.mark.parametrize("sort_key, expected_order", [
(repr, ["Alpha", "Beta", "Charlie"]), # Modifié pour utiliser les vrais noms
@pytest.mark.parametrize("sort_key,expected", [
(repr, ["Alpha", "Beta", "Charlie"]),
(str, ["Alpha", "Beta", "Charlie"]),
(lambda a: a.ID, ["id1", "id2", "id3"]),
(lambda a: a.name.lower(), ["Alpha", "Beta", "Charlie"]),
(lambda a: a.name.lower(), ["alpha", "beta", "charlie"]),
])
def test_snapshot_sort_keys(sort_key, expected_order):
a = FakeAdjustable("id3", name="Alpha")
b = FakeAdjustable("id1", name="Beta")
c = FakeAdjustable("id2", name="Charlie")
unordered = [c, a, b]
with patch('slic.utils.registry.instances', return_value=unordered):
def test_snapshot_sort_keys(sort_key, expected):
a = FakeAdjustable("id3", "Alpha")
b = FakeAdjustable("id1", "Beta")
c = FakeAdjustable("id2", "Charlie")
with patch('slic.utils.registry.instances', return_value=[c, a, b]):
result = snapshot(sort_key=sort_key)
if sort_key == repr:
assert [obj.name for obj in result] == expected_order
elif sort_key == str:
assert [obj.name for obj in result] == expected_order
elif 'ID' in sort_key.__code__.co_varnames:
assert [obj.ID for obj in result] == expected_order
if callable(sort_key) and 'ID' in sort_key.__code__.co_varnames:
assert [x.ID for x in result] == expected
elif callable(sort_key):
assert [x.name.lower() for x in result] == expected
else:
assert [obj.name.lower() for obj in result] == [n.lower() for n in expected_order]
assert [x.name for x in result] == expected