-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_window.py
156 lines (115 loc) · 5.3 KB
/
test_window.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
import pytest
import main
@pytest.fixture
def app(qtbot):
test_app = main.Window()
qtbot.addWidget(test_app)
return test_app
@pytest.fixture(scope='function', autouse=True)
def first_app(app, request):
request.instance.app = app
class Test_general:
# test that no error_message in normal case
def test_no_error(self, request):
assert request.instance.app.error_message.isHidden() == True
# test plot button text
def test_plot_text(self, request):
assert request.instance.app.plot.text() == "Plot"
# test plot button text
def test_error_font(self, request):
request.instance.app.function.setText("xy")
request.instance.app.plot.click()
assert (request.instance.app.error_message.font().family(),
request.instance.app.error_message.font().pointSize()) == ("Times",12)
class Test_function:
# test func_label text
def test_func_label(self, request):
assert request.instance.app.func_label.text() == "Function: "
# test function starting text
def test_function_text(self, request):
assert request.instance.app.function.text() == "x"
# test that function is an editable text box
def test_editable(self, request):
assert request.instance.app.function.isReadOnly() == False
# test that function is an enabled text box
def test_enabled(self, request):
assert request.instance.app.function.isEnabled() == True
# test that on_change signal is emitted when click 'plot'
def test_onChange_signal(self, request, qtbot):
with qtbot.waitSignal(request.instance.app.plot.clicked, timeout=10000):
request.instance.app.plot.click()
# test that error_message is shown if wrong word is written in function after clicking 'plot' e.g., xy
def test_function_error(self, request):
request.instance.app.function.setText("xy")
request.instance.app.plot.click()
assert request.instance.app.error_message.isHidden() == False
class Test_min_spinbox:
# test min x starting value
def test_value(self, request):
assert request.instance.app.mn.value() == float(-1)
# test minimum possible value
def test_minimum_value(self, request):
assert request.instance.app.mn.minimum() == float(-1000)
# test maximum possible value
def test_maximum_value(self, request):
assert request.instance.app.mn.maximum() == float(1000)
# test min x label
def test_prefix(self, request):
assert request.instance.app.mn_label.text() == "Minimum x: "
# test that box is editable
def test_editable(self, request):
assert request.instance.app.mn.isReadOnly() == False
# test that box is enabled
def test_enabled(self, request):
assert request.instance.app.mn.isEnabled() == True
# test that decreasing value is allowed
def test_stepdown(self, request):
request.instance.app.mn.stepBy(-1)
assert request.instance.app.mn.value() == float(-2)
# test that increasing value is allowed
def test_stepup(self, request):
request.instance.app.mn.stepBy(1)
assert request.instance.app.mn.value() == float(0)
# test that on-change signal is emitted when changing the value
def test_onChange_signal(self, request, qtbot):
with qtbot.waitSignal(request.instance.app.mn.valueChanged, timeout=10000):
request.instance.app.mn.stepBy(5)
# test that min x is less than max x otherwise error is shown
def test_mn_limits(self, request):
request.instance.app.mn.setValue(request.instance.app.mx.value())
assert request.instance.app.error_message.isHidden() == False
class Test_max_spinbox:
# test max x starting value
def test_value(self, request):
assert request.instance.app.mx.value() == float(1)
# test minimum possible value
def test_minimum_value(self, request):
assert request.instance.app.mx.minimum() == float(-1000)
# test maximum possible value
def test_maximum_value(self, request):
assert request.instance.app.mx.maximum() == float(1000)
# test max x label
def test_prefix(self, request):
assert request.instance.app.mx_label.text() == "Maximum x: "
# test that box is editable
def test_editable(self, request):
assert request.instance.app.mx.isReadOnly() == False
# test that box is enabled
def test_enabled(self, request):
assert request.instance.app.mx.isEnabled() == True
# test that decreasing value is allowed
def test_stepdown(self, request):
request.instance.app.mx.stepBy(-1)
assert request.instance.app.mx.value() == float(0)
# test that increasing value is allowed
def test_stepup(self, request):
request.instance.app.mx.stepBy(1)
assert request.instance.app.mx.value() == float(2)
# test that on-change signal is emitted when changing the value
def test_onChange_signal(self, request, qtbot):
with qtbot.waitSignal(request.instance.app.mx.valueChanged, timeout=10000):
request.instance.app.mx.stepBy(5)
# test that max x is greater than min x otherwise error is shown
def test_mn_limits(self, request):
request.instance.app.mx.setValue(request.instance.app.mn.value())
assert request.instance.app.error_message.isHidden() == False