Squish: Let ensureChecked() handle tristate checkboxes

Change-Id: Iecb18400512ec6525757b442cf3b984d22302009
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
This commit is contained in:
Robert Loehning
2013-12-12 14:42:28 +01:00
parent 0143d60063
commit cdf5c36f64

View File

@@ -52,19 +52,28 @@ def verifyChecked(objectName):
return object return object
def ensureChecked(objectName, shouldBeChecked = True, timeout=20000): def ensureChecked(objectName, shouldBeChecked = True, timeout=20000):
object = waitForObject(objectName, timeout)
# synchronize to avoid false positives
waitFor('object.checked == shouldBeChecked', 1000)
if object.checked ^ shouldBeChecked:
clickButton(object)
if shouldBeChecked: if shouldBeChecked:
targetState = Qt.Checked
state = "checked" state = "checked"
else: else:
targetState = Qt.Unchecked
state = "unchecked" state = "unchecked"
widget = waitForObject(objectName, timeout)
try:
# needed for transition Qt::PartiallyChecked -> Qt::Checked -> Qt::Unchecked
clicked = 0
while not waitFor('widget.checkState() == targetState', 1000) and clicked < 2:
clickButton(widget)
clicked += 1
test.verify(waitFor("widget.checkState() == targetState", 1000))
except:
# widgets not derived from QCheckbox don't have checkState()
if not waitFor('widget.checked == shouldBeChecked', 1000):
clickButton(widget)
test.verify(waitFor("widget.checked == shouldBeChecked", 1000))
test.log("New state for QCheckBox: %s" % state, test.log("New state for QCheckBox: %s" % state,
str(objectName)) str(objectName))
test.verify(waitFor("object.checked == shouldBeChecked", 1000)) return widget
return object
# verify that an object is in an expected enable state. Returns the object. # verify that an object is in an expected enable state. Returns the object.
# param objectSpec specifies the object to check. It can either be a string determining an object # param objectSpec specifies the object to check. It can either be a string determining an object