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

            taskCompletionSource.SetResult(42);

            bool called = false;

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

                called = true;
            }, TaskScheduler.Default).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.WhenValueAvailableAsync(result =>
            {
                Assert.AreEqual(42, result);

                called = true;
            });

            Assert.IsFalse(called);

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

            Assert.IsTrue(called);
        }
Esempio n. 3
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.WhenValueAvailableAsync(result =>
            {
                Assert.AreEqual(42, result);

                called = true;
            });

            Assert.IsFalse(called);

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

            Assert.IsTrue(called);
        }
Esempio n. 4
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.WhenValueAvailableAsync(result =>
            {
                Assert.AreEqual(42, result);

                called = true;
            }).Wait();

            Assert.IsTrue(called);
        }