Local changes: Updated model training, removed debug instrumentation, and configuration improvements
This commit is contained in:
60
tests/utils/ui_helpers.py
Normal file
60
tests/utils/ui_helpers.py
Normal file
@@ -0,0 +1,60 @@
|
||||
"""UI testing utilities and helpers."""
|
||||
|
||||
from PyQt6.QtWidgets import QApplication
|
||||
from typing import Optional
|
||||
|
||||
|
||||
def get_or_create_qapplication() -> QApplication:
|
||||
"""Get existing QApplication or create new one.
|
||||
|
||||
Returns:
|
||||
QApplication instance
|
||||
"""
|
||||
app = QApplication.instance()
|
||||
if app is None:
|
||||
app = QApplication([])
|
||||
return app
|
||||
|
||||
|
||||
def create_test_widget(widget_class, *args, **kwargs):
|
||||
"""Create widget instance for testing.
|
||||
|
||||
Args:
|
||||
widget_class: Widget class to instantiate
|
||||
*args: Positional arguments for widget
|
||||
**kwargs: Keyword arguments for widget
|
||||
|
||||
Returns:
|
||||
Widget instance
|
||||
"""
|
||||
app = get_or_create_qapplication()
|
||||
return widget_class(*args, **kwargs)
|
||||
|
||||
|
||||
class SignalSpy:
|
||||
"""Helper to spy on Qt signals."""
|
||||
|
||||
def __init__(self, signal):
|
||||
"""Initialize signal spy.
|
||||
|
||||
Args:
|
||||
signal: Qt signal to spy on
|
||||
"""
|
||||
self.signal = signal
|
||||
self.calls = []
|
||||
signal.connect(self._on_signal)
|
||||
|
||||
def _on_signal(self, *args, **kwargs):
|
||||
"""Record signal emission."""
|
||||
self.calls.append((args, kwargs))
|
||||
|
||||
def assert_called(self, times: Optional[int] = None):
|
||||
"""Assert signal was called.
|
||||
|
||||
Args:
|
||||
times: Expected number of calls (None for any)
|
||||
"""
|
||||
if times is None:
|
||||
assert len(self.calls) > 0, "Signal was not called"
|
||||
else:
|
||||
assert len(self.calls) == times, f"Signal called {len(self.calls)} times, expected {times}"
|
||||
Reference in New Issue
Block a user