Esempio n. 1
0
        public void WhenValueAvailable_Calls_Action_Immediately_If_Value_Already_Is_Available()
        {
            var taskCompletionSource = new TaskCompletionSource <int>();
            var taskLazy             = new TaskLazy <int>(taskCompletionSource.Task);

            taskCompletionSource.SetResult(42);

            bool called = false;

            taskLazy.WhenValueAvailable(result =>
            {
                Assert.AreEqual(42, result);

                called = true;
            }).Wait();

            Assert.IsTrue(called);
        }
Esempio n. 2
0
        public void When_Value_Available_Executes_When_Value_Becomes_Available()
        {
            var taskCompletionSource = new TaskCompletionSource <int>();
            var taskLazy             = new TaskLazy <int>(taskCompletionSource.Task);

            bool called = false;
            var  task   = taskLazy.WhenValueAvailable(result =>
            {
                Assert.AreEqual(42, result);

                called = true;
            });

            Assert.IsFalse(called);

            taskCompletionSource.SetResult(42);
            task.Wait();

            Assert.IsTrue(called);
        }