Initial Commit
This commit is contained in:
87
test_transition.py
Normal file
87
test_transition.py
Normal file
@@ -0,0 +1,87 @@
|
||||
# src/test_transition.py
|
||||
|
||||
import time
|
||||
import psutil
|
||||
from PIL import Image
|
||||
from src.display_manager import DisplayManager
|
||||
from src.config_manager import ConfigManager
|
||||
|
||||
PRESETS = {
|
||||
"snappy": {
|
||||
"type": "fade",
|
||||
"fade_duration": 0.3,
|
||||
"fade_steps": 5,
|
||||
"easing": True
|
||||
},
|
||||
"cinematic": {
|
||||
"type": "fade",
|
||||
"fade_duration": 0.8,
|
||||
"fade_steps": 12,
|
||||
"easing": True
|
||||
},
|
||||
"lightweight": {
|
||||
"type": "fade",
|
||||
"fade_duration": 0.4,
|
||||
"fade_steps": 4,
|
||||
"easing": False
|
||||
},
|
||||
"cut": {
|
||||
"type": "cut",
|
||||
"cut_duration": 0.2
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def benchmark_transition(dm, transition_func, *args, **kwargs):
|
||||
psutil.cpu_percent(interval=None)
|
||||
start = time.time()
|
||||
transition_func(*args, **kwargs)
|
||||
end = time.time()
|
||||
cpu = psutil.cpu_percent(interval=None)
|
||||
print(f"{transition_func.__name__} took {end - start:.2f}s, CPU ~{cpu:.1f}%")
|
||||
|
||||
|
||||
def show_frame(dm, color, hold=0.5):
|
||||
frame = Image.new("RGB", (dm.width, dm.height), color)
|
||||
dm.image.paste(frame)
|
||||
dm.update_display()
|
||||
time.sleep(hold)
|
||||
|
||||
|
||||
def run_preset(name, settings, dm):
|
||||
print(f"\n=== Testing preset: {name} ===")
|
||||
show_frame(dm, (255, 0, 0), hold=0.5) # red start
|
||||
|
||||
if settings["type"] == "fade":
|
||||
dur = settings.get("fade_duration", 0.4)
|
||||
steps = settings.get("fade_steps", 6)
|
||||
easing = settings.get("easing", True)
|
||||
|
||||
benchmark_transition(dm, dm.fade_out, duration=dur, steps=steps, easing=easing)
|
||||
show_frame(dm, (0, 0, 255), hold=0.0) # blue
|
||||
benchmark_transition(dm, dm.fade_in, duration=dur, steps=steps, easing=easing)
|
||||
|
||||
elif settings["type"] == "cut":
|
||||
dur = settings.get("cut_duration", 0.2)
|
||||
benchmark_transition(dm, dm.cut_to_black, duration=dur)
|
||||
show_frame(dm, (0, 0, 255), hold=0.5) # blue
|
||||
|
||||
# After each preset, hold a 2‑second black screen
|
||||
show_frame(dm, (0, 0, 0), hold=2.0)
|
||||
|
||||
|
||||
def main():
|
||||
config = ConfigManager().load_config()
|
||||
dm = DisplayManager(config)
|
||||
|
||||
# Loop through all presets twice for stress test
|
||||
for cycle in range(2):
|
||||
print(f"\n### Cycle {cycle+1} ###")
|
||||
for name, settings in PRESETS.items():
|
||||
run_preset(name, settings, dm)
|
||||
|
||||
print("\nAll presets tested.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user