public IEnumerator ShowingContent_InInspectorWindow_CanControlLifecycle()
        {
            Selection.activeObject = null;
            yield return(null);

            var content = new LifecycleContent();

            content.Status = ContentStatus.ContentNotReady;
            SelectionUtility.ShowInInspector(content);
            for (var i = 0; i < 10; ++i)
            {
                yield return(null);
            }
            var editor = Resources.FindObjectsOfTypeAll <InspectorContentEditor>().FirstOrDefault();

            Assert.That(editor && null != editor, Is.EqualTo(true));
            var element = editor.Target.Root.Q <Element <LifecycleContent> >();

            Assert.That(element, Is.Null);
            yield return(null);

            element = editor.Target.Root.Q <Element <LifecycleContent> >();
            Assert.That(element, Is.Null);

            content.Status = ContentStatus.ContentReady;

            for (var i = 0; i < 10; ++i)
            {
                yield return(null);
            }
            element = editor.Target.Root.Q <Element <LifecycleContent> >();
            Assert.That(element, Is.Not.Null);

            content.Status = ContentStatus.ContentNotReady;
            for (var i = 0; i < 10; ++i)
            {
                yield return(null);
            }
            element = editor.Target.Root.Q <Element <LifecycleContent> >();
            Assert.That(element, Is.Null);

            content.Status = ContentStatus.ContentUnavailable;
            for (var i = 0; i < 10; ++i)
            {
                yield return(null);
            }
            Assert.That(editor && null != editor, Is.EqualTo(false));
        }
        public IEnumerator ShowingContent_InEditorWindow_CanControlLifecycle()
        {
            CloseAllWindows();
            var content = new LifecycleContent();

            content.Status = ContentStatus.ContentNotReady;
            SelectionUtility.ShowInWindow(content);
            var window = EditorWindow.GetWindow <ContentWindow>();

            yield return(null);

            Assert.That(window && null != window, Is.EqualTo(true));
            var element = window.rootVisualElement.Q <Element <LifecycleContent> >();

            Assert.That(element, Is.Null);
            yield return(null);

            element = window.rootVisualElement.Q <Element <LifecycleContent> >();
            Assert.That(element, Is.Null);

            content.Status = ContentStatus.ContentReady;
            yield return(null);

            element = window.rootVisualElement.Q <Element <LifecycleContent> >();
            Assert.That(element, Is.Not.Null);

            content.Status = ContentStatus.ContentNotReady;
            yield return(null);

            element = window.rootVisualElement.Q <Element <LifecycleContent> >();
            Assert.That(element, Is.Null);

            content.Status = ContentStatus.ContentUnavailable;
            yield return(null);

            Assert.That(window && null != window, Is.EqualTo(false));
        }