3
3
from unittest import mock
4
4
5
5
from PySide2 import QtWidgets
6
+ from PySide2 .QtCore import Qt
7
+ from PySide2 .QtTest import QTest
6
8
7
9
from eqt .ui .FormDialog import FormDialog
8
10
from eqt .ui .UIFormWidget import FormDockWidget , FormWidget
@@ -17,6 +19,22 @@ class FormsCommonTests(metaclass=abc.ABCMeta):
17
19
def setUp (self ):
18
20
raise NotImplementedError
19
21
22
+ @property
23
+ def exampleState (self ):
24
+ # define two states for every widget
25
+ state = [{
26
+ 'label_value' : 'Test label state 0' , 'checkbox_value' : False , 'combobox_value' : 0 ,
27
+ 'doubleSpinBox_value' : 10.0 , 'spinBox_value' : 10 , 'slider_value' : 10 ,
28
+ 'uislider_value' : 10 , 'radio_value' : False , 'textEdit_value' : 'test edit 0' ,
29
+ 'plainTextEdit_value' : 'test plain 0' , 'lineEdit_value' : 'test line 0' ,
30
+ 'pushButton_value' : False }, {
31
+ 'label_value' : 'Test label state 1' , 'checkbox_value' : True , 'combobox_value' : 1 ,
32
+ 'doubleSpinBox_value' : 1.0 , 'spinBox_value' : 1 , 'slider_value' : 1 ,
33
+ 'uislider_value' : 1 , 'radio_value' : True , 'textEdit_value' : 'test edit 1' ,
34
+ 'plainTextEdit_value' : 'test plain 1' , 'lineEdit_value' : 'test line 1' ,
35
+ 'pushButton_value' : True }]
36
+ return state
37
+
20
38
def add_every_widget (self ):
21
39
"""Generate every widget and add it to `self.form`"""
22
40
form = self .form
@@ -39,6 +57,44 @@ def add_two_widgets(self):
39
57
form .addWidget (QtWidgets .QLabel ('test label' ), 'Label: ' , 'label' )
40
58
form .addWidget (QtWidgets .QCheckBox ('test checkbox' ), 'CheckBox: ' , 'checkBox' )
41
59
60
+ def set_state (self , i ):
61
+ """
62
+ Applies the values saved in `self.exampleState` at position `i` to the widgets in the form.
63
+
64
+ Parameters
65
+ ----------------
66
+ i: int
67
+ """
68
+ state = self .exampleState
69
+ # set the states
70
+ # QLabel
71
+ self .form .getWidget ('label' ).setText (state [i ]['label_value' ])
72
+ # QCheckBox
73
+ self .form .getWidget ('checkBox' ).setChecked (state [i ]['checkbox_value' ])
74
+ # QComboBox
75
+ combobox_list = ['test' , 'test2' ]
76
+ self .form .getWidget ('comboBox' ).addItems (combobox_list )
77
+ self .form .getWidget ('comboBox' ).setCurrentIndex (state [i ]['combobox_value' ])
78
+ # QDoubleSpinBox
79
+ self .form .getWidget ('doubleSpinBox' ).setValue (state [i ]['doubleSpinBox_value' ])
80
+ # QSpinBox
81
+ self .form .getWidget ('spinBox' ).setValue (state [i ]['spinBox_value' ])
82
+ # QSlider
83
+ self .form .getWidget ('slider' ).setValue (state [i ]['slider_value' ])
84
+ # UISlider
85
+ self .form .getWidget ('uiSliderWidget' ).setValue (state [i ]['uislider_value' ])
86
+ # QRadioButton
87
+ self .form .getWidget ('radioButton' ).setChecked (state [i ]['radio_value' ])
88
+ # QTextEdit
89
+ self .form .getWidget ('textEdit' ).setText (state [i ]['textEdit_value' ])
90
+ # QPlainTextEdit
91
+ self .form .getWidget ('plainTextEdit' ).setPlainText (state [i ]['plainTextEdit_value' ])
92
+ # QLineEdit
93
+ self .form .getWidget ('lineEdit' ).setText (state [i ]['lineEdit_value' ])
94
+ # QPushButton
95
+ self .form .getWidget ('button' ).setCheckable (True )
96
+ self .form .getWidget ('button' ).setChecked (state [i ]['pushButton_value' ])
97
+
42
98
def _test_remove_one_widget (self , name ):
43
99
"""
44
100
Remove one widget.
@@ -328,6 +384,38 @@ def setUp(self):
328
384
self .add_two_widgets ()
329
385
self .layout = self .form .formWidget .uiElements ['groupBoxFormLayout' ]
330
386
387
+ def click_Ok (self ):
388
+ QTest .mouseClick (self .form .Ok , Qt .LeftButton )
389
+
390
+ def click_Cancel (self ):
391
+ QTest .mouseClick (self .form .Cancel , Qt .LeftButton )
392
+
393
+ def test_dialog_buttons_default_behaviour (self ):
394
+ # create the states dictionary
395
+ self .set_state (1 )
396
+ states1 = self .form .getAllWidgetStates ()
397
+ self .set_state (0 )
398
+ states0 = self .form .getAllWidgetStates ()
399
+ # check state 0 and 1 are not saved when Cancel is pressed
400
+ self .click_Cancel ()
401
+ self .assertNotEqual (states0 , self .form .getAllWidgetStates ())
402
+ self .assertNotEqual (states1 , self .form .getAllWidgetStates ())
403
+ # save state 0
404
+ self .set_state (0 )
405
+ self .assertEqual (states0 , self .form .getAllWidgetStates ())
406
+ self .click_Ok ()
407
+ self .assertEqual (states0 , self .form .getAllWidgetStates ())
408
+ # save state 1
409
+ self .set_state (1 )
410
+ self .assertEqual (states1 , self .form .getAllWidgetStates ())
411
+ self .click_Ok ()
412
+ self .assertEqual (states1 , self .form .getAllWidgetStates ())
413
+ # change to state 0 without saving
414
+ self .set_state (0 )
415
+ self .assertEqual (states0 , self .form .getAllWidgetStates ())
416
+ self .click_Cancel ()
417
+ self .assertEqual (states1 , self .form .getAllWidgetStates ())
418
+
331
419
def test_form_init_title (self ):
332
420
"""Tests if the FormDialog is created correctly with or without the title argument."""
333
421
FormDialog ()
0 commit comments