public void combined_promise_is_resolved_if_there_are_no_promises() { var all = Promise.All(LinqExts.Empty <IPromise>()); var completed = 0; all.Then(() => ++ completed); }
public void combined_promise_is_resolved_if_there_are_no_promises() { var all = Promise <int> .All(LinqExts.Empty <IPromise <int> >()); var completed = 0; all.Then(v => { ++completed; Assert.Empty(v); }); Assert.Equal(1, completed); }
public void expect_one_throws_exception_on_no_matching_game_objects() { Init(); var selector = "some-selector"; var mockQuery = new Mock <IQuery>(); mockQueryParser .Setup(m => m.Parse(selector)) .Returns(mockQuery.Object); mockSceneTraversal .Setup(m => m.PreOrderHierarchy()) .Returns(LinqExts.Empty <GameObject>()); Assert.Throws <ApplicationException>(() => testObject.ExpectOne(selector)); }
/// <summary> /// Returns a promise that resolves when all of the promises in the enumerable argument have resolved. /// Returns a promise of a collection of the resolved results. /// </summary> public static IPromise <IEnumerable <PromisedT> > All(IEnumerable <IPromise <PromisedT> > promises) { var promisesArray = promises.ToArray(); if (promisesArray.Length == 0) { return(Promise <IEnumerable <PromisedT> > .Resolved(LinqExts.Empty <PromisedT>())); } var remainingCount = promisesArray.Length; var results = new PromisedT[remainingCount]; var resultPromise = new Promise <IEnumerable <PromisedT> >(); resultPromise.WithName("All"); promisesArray.Each((promise, index) => { promise .Catch(ex => { if (resultPromise.CurState == PromiseState.Pending) { // If a promise errorred and the result promise is still pending, reject it. resultPromise.Reject(ex); } }) .Then(result => { results[index] = result; --remainingCount; if (remainingCount <= 0) { // This will never happen if any of the promises errorred. resultPromise.Resolve(results); } }) .Done(); }); return(resultPromise); }