public static void test_object_promise_cancel() { Efl.Loop loop = Efl.App.AppMain; var obj = new Dummy.TestObject(); Eina.Future future = obj.GetFuture(); bool callbackCalled = false; Eina.Error receivedError = -1; Eina.Error sentError = 120; future.Then((Eina.Value value) => { callbackCalled = true; Test.AssertEquals(value.GetValueType(), Eina.ValueType.Error); value.Get(out receivedError); return(value); }); obj.RejectPromise(sentError); loop.Iterate(); Test.Assert(callbackCalled, "Future callback must have been called."); Test.AssertEquals(receivedError, sentError); }
public static void test_async_reject() { Efl.Loop loop = Efl.App.AppMain; var obj = new Dummy.TestObject(); Task <Eina.Value> task = obj.GetFutureAsync(); Eina.Error sentError = 1337; obj.RejectPromise(sentError); loop.Iterate(); bool raised = false; try { Eina.Value v = task.Result; } catch (AggregateException ae) { raised = true; ae.Handle((x) => { Test.Assert(x is Efl.FutureException, "AggregateException must have been TaskCanceledException"); Efl.FutureException ex = x as Efl.FutureException; Test.AssertEquals(ex.Error, sentError); return(true); }); } Test.Assert(raised, "AggregateException must have been raised."); }