Example #1
0
        public void TestCase_CanExecuteOne_OneAtATime()
        {
            // Given
            int        count = 0;
            Func <int> func  = () => ++ count;
            Func <int> func2 = () => ++ count;

            IEnumerator <Job> jobs = func.AsCoRoutine()
                                     .ContinueWith(func2)
                                     .ToJobs();

            // When
            Job firstJob = jobs.DoWork();

            // Then
            Assert.AreEqual(1, count);
            Assert.AreEqual(1, firstJob.Result);
            Assert.AreEqual(Progress.InProgress, firstJob.Progress);

            // When
            Job secondJob = jobs.DoWork();

            // Then
            Assert.AreEqual(2, count);
            Assert.AreEqual(2, secondJob.Result);
            Assert.AreEqual(Progress.InProgress, secondJob.Progress);

            // When
            Job nullableJob = jobs.DoWork();

            // Then
            Assert.AreEqual(2, count); // There is no fnal job, the count should not increase
            Assert.AreEqual(Job.NONE, nullableJob.Result);
            Assert.AreEqual(Progress.Done, nullableJob.Progress);
        }