import sys import time from PyQt5 import QtCore from pyblish_qml import util # Vendor libraries from nose.tools import ( assert_true, assert_equals ) def test_defer(): """util.defer works as expected""" app = QtCore.QCoreApplication(sys.argv) mutable = dict() def expensive_function(): time.sleep(0.1) return 5 def on_expensive_function(result): mutable["result"] = result app.quit() qthread = util.defer(expensive_function, callback=on_expensive_function) app.exec_() assert_true(qthread.wait(200)) assert_equals(mutable["result"], 5) def test_chain_with_functions(): """util.chain works with functions""" def ten(data): return 10 def mult_by_2(data): return data * 2.0 def divide_by_4(data): return data / 4.0 result = util.chain(ten, mult_by_2, divide_by_4) assert_equals(result, 5) def test_chain_with_lambdas(): """util.chain works with lambdas""" result = util.chain(lambda result: 5, lambda result: result * 2) assert_equals(result, 10)