def test_dict_promise_when(): p1 = Promise() p2 = Promise() d = {"a": p1, "b": p2} pd1 = dictPromise(d) pd2 = dictPromise({"a": p1}) pd3 = dictPromise({}) assert p1.isPending assert p2.isPending assert pd1.isPending assert pd2.isPending assert pd3.isFulfilled p1.fulfill(5) assert p1.isFulfilled assert p2.isPending assert pd1.isPending assert pd2.isFulfilled p2.fulfill(10) assert p1.isFulfilled assert p2.isFulfilled assert pd1.isFulfilled assert pd2.isFulfilled assert_equals(5, p1.value) assert_equals(10, p2.value) assert_equals(5, pd1.value["a"]) assert_equals(5, pd2.value["a"]) assert_equals(10, pd1.value["b"]) assert_equals({}, pd3.value)
def promisify(value): # TODO, support futures etc.. if isinstance(value, aplus.Promise): return value if isinstance(value, (list, tuple)): return aplus.listPromise(*list([promisify(k) for k in value])) if isinstance(value, dict): return aplus.dictPromise({k: promisify(v) for k, v in value.items()}) else: return aplus.Promise.fulfilled(value)
def test_dict_promise_if(): p1 = Promise() p2 = Promise() d = {"a": p1, "b": p2} pd = dictPromise(d) assert p1.isPending() assert p2.isPending() assert pd.isPending() p1.fulfill(5) assert p1.isFulfilled() assert p2.isPending() assert pd.isPending() p2.fulfill(10) assert p1.isFulfilled() assert p2.isFulfilled() assert pd.isFulfilled() assert_equals(5, p1.value) assert_equals(10, p2.value) assert_equals(5, pd.value["a"]) assert_equals(10, pd.value["b"])
def test_dict_promise_if(): p1 = Promise() p2 = Promise() d = {"a": p1, "b": p2} pd = dictPromise(d) assert p1.isPending assert p2.isPending assert pd.isPending p1.fulfill(5) assert p1.isFulfilled assert p2.isPending assert pd.isPending p2.fulfill(10) assert p1.isFulfilled assert p2.isFulfilled assert pd.isFulfilled assert_equals(5, p1.value) assert_equals(10, p2.value) assert_equals(5, pd.value["a"]) assert_equals(10, pd.value["b"])