Improved data race test

This commit is contained in:
Daniel Lidstrom 2020-12-20 23:07:06 -08:00
parent bea0fc1135
commit d737d80c52

View File

@ -147,11 +147,21 @@ def test_limits_enforcement():
def test_data_race(): def test_data_race():
# Ensure widgets don't override user setting of param values whether
# they connect the signal before or after it's added to a tree
p = pt.Parameter.create(name='int', type='int', value=0) p = pt.Parameter.create(name='int', type='int', value=0)
p.sigValueChanged.connect(lambda: p.setValue(1)) # connect signal before adding to tree to ensure priority
t = pt.ParameterTree() t = pt.ParameterTree()
def override():
p.setValue(1)
p.sigValueChanged.connect(override)
t.setParameters(p) t.setParameters(p)
pi = t.nextFocusableChild(t.invisibleRootItem()) pi, = t.listAllItems()
assert pi.param is p
pi.widget.setValue(2)
assert p.value() == pi.widget.value() == 1
p.sigValueChanged.disconnect(override)
p.sigValueChanged.connect(override)
pi.widget.setValue(2) pi.widget.setValue(2)
assert p.value() == pi.widget.value() == 1 assert p.value() == pi.widget.value() == 1