Skip to content

Commit d3b034d

Browse files
committed
Adds tests
1 parent 311b6f0 commit d3b034d

1 file changed

Lines changed: 46 additions & 1 deletion

File tree

src/sas/qtgui/Plotting/UnitTesting/SlicerModelTest.py

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def testBaseClass(self, qapp):
2828
'''Assure that SlicerModel contains pure virtuals'''
2929
model = SlicerModel()
3030
with pytest.raises(NotImplementedError):
31-
model.setParams()
31+
model.setParams({})
3232
with pytest.raises(NotImplementedError):
3333
model.setModelFromParams()
3434

@@ -64,3 +64,48 @@ def testSetParamsFromModel(self, model):
6464
# Check the new model. The update should be automatic
6565
assert model.model().rowCount() == 3
6666
assert model.model().columnCount() == 2
67+
68+
def testSetParamsFromModel_restores_update_model_on_exception(self, qapp):
69+
"""update_model should be restored even if setParams raises."""
70+
class FailingModel(SlicerModel):
71+
params = {"a": 1}
72+
73+
def __init__(self):
74+
SlicerModel.__init__(self)
75+
76+
def getParams(self):
77+
return self.params
78+
79+
def setParams(self, par):
80+
raise RuntimeError("boom")
81+
82+
model = FailingModel()
83+
model.setModelFromParams()
84+
85+
with pytest.raises(RuntimeError):
86+
model.setParamsFromModel()
87+
88+
assert model.update_model is True
89+
90+
def testSetParamsFromModelItem_restores_update_model_on_exception(self, qapp):
91+
"""update_model should be restored for single-item updates too."""
92+
class FailingModel(SlicerModel):
93+
params = {"a": 1}
94+
95+
def __init__(self):
96+
SlicerModel.__init__(self)
97+
98+
def getParams(self):
99+
return self.params
100+
101+
def setParams(self, par):
102+
raise RuntimeError("boom")
103+
104+
model = FailingModel()
105+
model.setModelFromParams()
106+
item = model.model().item(0, 1)
107+
108+
with pytest.raises(RuntimeError):
109+
model.setParamsFromModelItem(item)
110+
111+
assert model.update_model is True

0 commit comments

Comments
 (0)