private IEnumerator waitForCompletedEventTest()
        {
            bool             completed = false;
            RadicalCoroutine coroutine = RadicalCoroutine.Create(testCoroutine(), "testCoroutine");

            coroutine.ECompleted += delegate
            {
                completed = true;
            };
            StartCoroutine(coroutine.Enumerator);
            yield return(coroutine);

            IntegrationTestEx.FailIf(!completed, "coroutine did not dispatch ECompleted after completion.");
            IntegrationTestEx.FailIf(coroutine.Cancelled);
        }
        private IEnumerator waitForFrameCancelledTest()
        {
            RadicalCoroutine coroutine = RadicalCoroutine.Create(testCoroutine(), "testCoroutine");

            StartCoroutine(coroutine.Enumerator);
            coroutine.ECancelled += delegate
            {
                waitForFrameCancelled = true;
            };
            coroutine.Cancel();
            while (!coroutine.Disposed)
            {
                yield return(null);
            }
            IntegrationTestEx.FailIf(!waitForFrameCancelled, "ECancelled was not dispatched for cancelled coroutine.");
        }
        private IEnumerator waitForResumedEventTest()
        {
            bool             resumed   = false;
            RadicalCoroutine coroutine = RadicalCoroutine.Create(testCoroutine(), "testCoroutine");

            coroutine.EResumed += delegate
            {
                resumed = true;
            };
            coroutine.Pause();
            StartCoroutine(coroutine.Enumerator);
            yield return(null);

            IntegrationTestEx.FailIf(resumed);
            coroutine.Resume();
            yield return(null);

            IntegrationTestEx.FailIf(!resumed, "coroutine did not dispatch EResumed one frame after resumed");
        }
        private IEnumerator waitForPausedEventTest()
        {
            bool             paused    = false;
            RadicalCoroutine coroutine = RadicalCoroutine.Create(testCoroutine(), "testCoroutine");

            coroutine.EPaused += delegate
            {
                paused = true;
            };
            coroutine.Pause();
            StartCoroutine(coroutine.Enumerator);
            yield return(new WaitForFrame(5));

            IntegrationTestEx.FailIf(!paused, "coroutine did not dispatch EPaused after within 5 frames.");
            IntegrationTestEx.FailIf(!coroutine.Paused);
            IntegrationTestEx.FailIf(coroutine.Disposed);
            IntegrationTestEx.FailIf(coroutine.Completed);
            IntegrationTestEx.FailIf(coroutine.Cancelled);
        }
        private IEnumerator cannotAddListenerToEmptyEnumerator()
        {
            RadicalCoroutine radicalCoroutine = RadicalCoroutine.Create(testEmptyCoroutine(), "testEmptyCoroutine");

            StartCoroutine(radicalCoroutine.Enumerator);
            bool flag = false;

            try
            {
                radicalCoroutine.ECompleted += delegate
                {
                };
            }
            catch (InvalidOperationException)
            {
                flag = true;
            }
            IntegrationTestEx.FailIf(!flag);
            IntegrationTestEx.FailIf(!radicalCoroutine.Disposed);
            yield break;
        }