Exemplo n.º 1
0
    static void Init()
    {
        // Get existing open window or if none, make a new one:
        BuilderWindow window = (BuilderWindow)EditorWindow.GetWindow(typeof(BuilderWindow));

        window.Show();
    }
        public IEnumerator HasVariableIndicator()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_NewVariableUxmlFilePath);

            BuilderWindow.LoadDocument(asset);

            yield return(UIETestHelpers.Pause(1));

            // Select test-selector-1
            var selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            var textFoldout = InspectorPane.Query <PersistedFoldout>().Where(f => f.text.Equals("Text")).First();

            textFoldout.value = true;

            var colorField = FindStyleField(textFoldout, "Color");

            Assert.IsTrue(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableClassName));

            var sizeField = FindStyleField(textFoldout, "Size");

            Assert.IsFalse(sizeField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableClassName));

            yield return(null);
        }
Exemplo n.º 3
0
        public IEnumerator UndoRedoBeforeAndAfterGoingIntoPlaymodeWithSceneReference()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestMultiUSSDocumentUXMLFilePath);

            var newObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
            var component = newObject.AddComponent <Tests.UIBuilderUXMLReferenceForTests>();

            component.visualTreeAssetRef = asset;

            BuilderWindow.LoadDocument(asset);

            Assert.That(BuilderWindow.documentRootElement.childCount, Is.EqualTo(k_MultiUSSElementCount));

            AddElementCodeOnly <TextField>();

            UndoRedoCheckWithTextField();

            yield return(new EnterPlayMode());

            UndoRedoCheckWithTextField();

            yield return(new ExitPlayMode());

            UndoRedoCheckWithTextField();

            yield return(null);
        }
Exemplo n.º 4
0
        public void SelectAndUnselect(BuilderSelectionType selectionType)
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestMultiUSSDocumentUXMLFilePath);

            BuilderWindow.LoadDocument(asset);

            Assert.AreEqual(BuilderSelectionType.Nothing, Selection.selectionType);
            Assert.AreEqual(0, Selection.selection.Count());

            var selectedElement1 = SelectByType(selectionType);

            Assert.NotNull(selectedElement1);
            Assert.AreEqual(selectionType, Selection.selectionType);
            Assert.AreEqual(1, Selection.selection.Count());
            Assert.AreEqual(selectedElement1, Selection.selection.ElementAt(0));
            Assert.AreEqual(selectedElement1, InspectorPane.currentVisualElement);

            if (selectionType != BuilderSelectionType.VisualTreeAsset)
            {
                var selectedElement2 = SelectByType(selectionType);
                Assert.NotNull(selectedElement2);
                Assert.AreEqual(selectionType, Selection.selectionType);
                Assert.AreEqual(2, Selection.selection.Count());
                Assert.AreEqual(selectedElement2, Selection.selection.ElementAt(1));
                Assert.AreNotEqual(selectedElement2, InspectorPane.currentVisualElement); // Only first in selection is set as currentVisualElement.
            }

            Selection.ClearSelection(null);
            Assert.AreEqual(BuilderSelectionType.Nothing, Selection.selectionType);
            Assert.AreEqual(0, Selection.selection.Count());
        }
Exemplo n.º 5
0
        public override void OnBuild(BuilderState config)
        {
            var targetGroup      = BuilderWindow.GetBuildTargetGroup(config.buildTarget);
            var scriptingDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(targetGroup);

            config.parameters[this] = new State
            {
                targetGroup     = targetGroup,
                originalDefines = scriptingDefines
            };

            var newDefines = new List <string>();

            foreach (var d in scriptingDefines.Split(';').Select(x => x.Trim()).Where(x => !string.IsNullOrEmpty(x)))
            {
                if (!newDefines.Contains(d))
                {
                    newDefines.Add(d);
                }
            }

            foreach (var s in this.defines)
            {
                if (!newDefines.Contains(s))
                {
                    newDefines.Add(s);
                }
            }

            PlayerSettings.SetScriptingDefineSymbolsForGroup(targetGroup, string.Join(";", newDefines.ToArray()));
        }
Exemplo n.º 6
0
        public void LoadExistingDocumentWithNoUSS()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestNoUSSDocumentUXMLFilePath);

            BuilderWindow.LoadDocument(asset);

            CheckNoUSSDocument();
        }
Exemplo n.º 7
0
        public IEnumerator LoadExistingDocumentWithMoreThanOneUSS()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestMultiUSSDocumentUXMLFilePath);

            BuilderWindow.LoadDocument(asset);

            yield return(CheckMultiUSSDocument());
        }
Exemplo n.º 8
0
        public void UndoRedoCreationOfTextFieldInMultiUSSDocument()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestMultiUSSDocumentUXMLFilePath);

            BuilderWindow.LoadDocument(asset);
            AddElementCodeOnly <TextField>();

            UndoRedoCheckWithTextField();
        }
Exemplo n.º 9
0
        protected virtual IEnumerator TearDown()
        {
            ForceNewDocument();
            MouseCaptureController.ReleaseMouse();

            yield return(null);

            BuilderWindow?.Close();
            yield return(null);
        }
Exemplo n.º 10
0
        protected IEnumerator LoadTestUXMLDocument(string filePath = k_TestUXMLFilePath)
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(filePath);

            Assert.That(asset, Is.Not.Null);
            BuilderWindow.LoadDocument(asset);
            yield return(UIETestHelpers.Pause());

            HierarchyPane.elementHierarchyView.ExpandAllChildren();
            StyleSheetsPane.elementHierarchyView.ExpandAllChildren();
        }
Exemplo n.º 11
0
        public IEnumerator SetVariable()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_NewVariableUxmlFilePath);

            BuilderWindow.LoadDocument(asset);

            yield return(UIETestHelpers.Pause(1));

            HierarchyPane.elementHierarchyView.ExpandAllChildren();
            StyleSheetsPane.elementHierarchyView.ExpandAllChildren();

            yield return(UIETestHelpers.Pause(1));

            // Select test-selector-1
            var selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            var textFoldout = InspectorPane.Query <PersistedFoldout>().Where(f => f.text.Equals("Text")).First();

            textFoldout.value = true;

            // Show variable field for the Size field
            var sizeField = FindStyleField <DimensionStyleField>(textFoldout, "Size");
            var handler   = StyleVariableUtilities.GetVarHandler(sizeField);

            Assert.IsFalse(sizeField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableClassName));
            handler.ShowVariableField();

            // Enter variable name
            var textField = handler.variableField.Q <TextField>();

            textField.value = k_LengthVarName;

            selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            // Click anywhere else to remove focus
            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            yield return(UIETestHelpers.Pause(1));

            Assert.IsTrue(sizeField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableClassName));

            var inspector = handler.inspector;

            var styleProperty = BuilderInspectorStyleFields.GetStyleProperty(inspector.currentRule, handler.styleName);

            Assert.IsTrue(styleProperty != null && styleProperty.IsVariable());
            Assert.AreEqual(inspector.styleSheet.ReadVariable(styleProperty), k_LengthVarName);

            yield return(null);
        }
Exemplo n.º 12
0
        public IEnumerable SelectionUndoRedo()
        {
            var selectionType = BuilderSelectionType.Element;

            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestMultiUSSDocumentUXMLFilePath);

            BuilderWindow.LoadDocument(asset);

            Assert.AreEqual(BuilderSelectionType.Nothing, Selection.selectionType);
            Assert.AreEqual(0, Selection.selection.Count());

            var selectedElement1 = SelectByType(selectionType);

            Assert.NotNull(selectedElement1);
            Assert.AreEqual(selectionType, Selection.selectionType);
            Assert.AreEqual(1, Selection.selection.Count());
            Assert.AreEqual(selectedElement1, Selection.selection.ElementAt(0));
            Assert.AreEqual(selectedElement1, InspectorPane.currentVisualElement);

            var selectedElement2 = SelectByType(selectionType);

            Assert.NotNull(selectedElement2);
            Assert.AreEqual(selectionType, Selection.selectionType);
            Assert.AreEqual(2, Selection.selection.Count());
            Assert.AreEqual(selectedElement2, Selection.selection.ElementAt(1));
            Assert.AreNotEqual(selectedElement2, InspectorPane.currentVisualElement); // Only first in selection is set as currentVisualElement.

            yield return(null);

            Undo.PerformUndo();
            yield return(null);

            Assert.AreEqual(selectionType, Selection.selectionType);
            Assert.AreEqual(1, Selection.selection.Count());

            yield return(null);

            Undo.PerformUndo();
            yield return(null);

            Assert.AreEqual(BuilderSelectionType.Nothing, Selection.selectionType);
            Assert.AreEqual(0, Selection.selection.Count());

            yield return(null);

            Undo.PerformUndo();
            yield return(null);

            Assert.AreEqual(selectionType, Selection.selectionType);
            Assert.AreEqual(1, Selection.selection.Count());
        }
Exemplo n.º 13
0
        protected void AddElementCodeOnly <T>(string name = "") where T : VisualElement, new()
        {
            var element = BuilderLibraryContent.GetLibraryItemForType(typeof(T)).MakeVisualElementCallback.Invoke();

            if (!string.IsNullOrEmpty(name))
            {
                element.name = name;
            }

            BuilderWindow.documentRootElement.Add(element);
            BuilderAssetUtilities.AddElementToAsset(BuilderWindow.document, element);
            BuilderWindow.OnEnableAfterAllSerialization();
            Selection.NotifyOfHierarchyChange();
        }
Exemplo n.º 14
0
        public IEnumerator ShowHideVariableField()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_NewVariableUxmlFilePath);

            BuilderWindow.LoadDocument(asset);

            yield return(UIETestHelpers.Pause(1));

            HierarchyPane.elementHierarchyView.ExpandAllChildren();
            StyleSheetsPane.elementHierarchyView.ExpandAllChildren();

            yield return(UIETestHelpers.Pause(1));

            // Select test-selector-1
            var selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            var textFoldout = InspectorPane.Query <PersistedFoldout>().Where(f => f.text.Equals("Text")).First();

            textFoldout.value = true;

            var colorField = FindStyleField <ColorField>(textFoldout, "Color");
            var handler    = StyleVariableUtilities.GetVarHandler(colorField);

            Assert.IsNull(handler.variableField);

            handler.ShowVariableField();

            Assert.IsTrue(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableEditingClassName));
            Assert.IsFalse(colorField.ClassListContains(BuilderConstants.ReadOnlyStyleClassName));
            Assert.IsNotNull(handler.variableField);

            yield return(UIETestHelpers.Pause(1));

            var inputField = handler.variableField.Q(TextField.textInputUssName);

            Assert.AreEqual(handler.variableField.resolvedStyle.display, DisplayStyle.Flex);
            Assert.IsTrue(HasFocus(inputField));

            selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            // Click anywhere else to remove focus
            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            Assert.IsFalse(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableEditingClassName));
            Assert.AreEqual(handler.variableField.resolvedStyle.display, DisplayStyle.None);
            yield return(null);
        }
Exemplo n.º 15
0
        public void CanvasSizeRestoredOnDomainOrWindowReloadAndResetsOnDocInit()
        {
            BuilderWindow.canvas.ResetSize();
            var newWidth = k_TestCanvasSizeValue;

            InspectorPane.Q <IntegerField>("canvas-width").value = newWidth;
            Assert.That(BuilderWindow.canvas.width, Is.EqualTo(newWidth));

            BuilderWindow.Close();
            m_NewBuilder = BuilderTestsHelper.MakeNewBuilderWindow();
            Assert.That(m_NewBuilder.canvas.width, Is.EqualTo(newWidth));

            m_NewBuilder.rootVisualElement.Q <BuilderToolbar>().NewDocument(false);
            Assert.That(m_NewBuilder.canvas.width, Is.Not.EqualTo(newWidth));
        }
        public IEnumerator UnsetVariable()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_NewVariableUxmlFilePath);

            BuilderWindow.LoadDocument(asset);

            yield return(UIETestHelpers.Pause(1));

            // Select test-selector-1
            var selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            var textFoldout = InspectorPane.Query <PersistedFoldout>().Where(f => f.text.Equals("Text")).First();

            textFoldout.value = true;

            // Show variable field for the Color field
            var colorField = FindStyleField <ColorField>(textFoldout, "Color");

            Assert.IsTrue(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableClassName));

            yield return(UIETestEvents.Mouse.SimulateDoubleClick(colorField.labelElement));

            yield return(UIETestHelpers.Pause(1));

            // Enter variable name
            var handler   = StyleVariableUtilities.GetVarHandler(colorField);
            var textField = handler.variableField.Q <TextField>();

            textField.value = "";

            selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            // Click anywhere else to remove focus
            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            Assert.IsFalse(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableClassName));

            var inspector = handler.inspector;

            var styleProperty = BuilderInspectorStyleFields.GetStyleProperty(inspector.currentRule, handler.styleName);

            Assert.IsNull(styleProperty);

            yield return(null);
        }
Exemplo n.º 17
0
        public IEnumerator SaveAsWithMoreThanOneUSS()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestMultiUSSDocumentUXMLFilePath);

            BuilderWindow.LoadDocument(asset);

            BuilderWindow.document.SaveUnsavedChanges(k_NewUxmlFilePath, true);

            var document = BuilderWindow.document;

            Assert.AreEqual(document.uxmlPath, k_NewUxmlFilePath);
            Assert.AreEqual(document.uxmlOldPath, k_NewUxmlFilePath);

            yield return(UIETestHelpers.Pause(1));

            yield return(CheckMultiUSSDocument());
        }
Exemplo n.º 18
0
        public void EnsureChangesAreUndoneIfOpeningNewDocWithoutSaving()
        {
            var asset      = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestMultiUSSDocumentUXMLFilePath);
            var assetCount = asset.visualElementAssets.Count;

            BuilderWindow.LoadDocument(asset);
            Assert.AreEqual(BuilderWindow.document.visualTreeAsset, asset);

            Assert.That(BuilderWindow.documentRootElement.childCount, Is.EqualTo(k_MultiUSSElementCount));

            AddElementCodeOnly <TextField>();
            // Test restoration of backup.
            Assert.AreNotEqual(asset.visualElementAssets.Count, assetCount);
            ForceNewDocument();
            Assert.AreEqual(asset.visualElementAssets.Count, assetCount);
            var asset2 = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestMultiUSSDocumentUXMLFilePath);

            Assert.AreEqual(asset2.visualElementAssets.Count, assetCount);
        }
Exemplo n.º 19
0
        public override void OnGUI()
        {
            var options  = BuilderWindow.GetOptions();
            int selected = -1;

            if (!string.IsNullOrEmpty(this.option))
            {
                selected = Array.IndexOf(options, this.option);

                if (selected < 0)
                {
                    this.option = EditorGUILayout.TextField("Options", this.option);
                    return;
                }
            }

            selected    = EditorGUILayout.Popup("Options", selected, options);
            this.option = selected < 0 ? null : options[selected];
        }
        public override void OnGUI()
        {
            var configs  = BuilderWindow.GetConfigurations();
            int selected = -1;

            if (!string.IsNullOrEmpty(this.configuration))
            {
                selected = Array.IndexOf(configs, this.configuration);

                if (selected < 0)
                {
                    this.configuration = EditorGUILayout.TextField("Configuration", this.configuration);
                    return;
                }
            }

            selected           = EditorGUILayout.Popup("Configuration", selected, configs);
            this.configuration = selected < 0 ? null : configs[selected];
        }
Exemplo n.º 21
0
        public IEnumerator UndoRedoBeforeAndAfterGoingIntoPlaymode()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestMultiUSSDocumentUXMLFilePath);

            BuilderWindow.LoadDocument(asset);

            Assert.That(BuilderWindow.documentRootElement.childCount, Is.EqualTo(k_MultiUSSElementCount));

            AddElementCodeOnly <TextField>();

            UndoRedoCheckWithTextField();

            yield return(new EnterPlayMode());

            UndoRedoCheckWithTextField();

            yield return(new ExitPlayMode());

            UndoRedoCheckWithTextField();

            yield return(null);
        }
        public IEnumerator ShowHideVariableInfoPopup()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_NewVariableUxmlFilePath);

            BuilderWindow.LoadDocument(asset);

            yield return(UIETestHelpers.Pause(1));

            // Select test-selector-1
            var selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            var textFoldout = InspectorPane.Query <PersistedFoldout>().Where(f => f.text.Equals("Text")).First();

            textFoldout.value = true;

            var colorField = FindStyleField <ColorField>(textFoldout, "Color");
            var handler    = StyleVariableUtilities.GetVarHandler(colorField);

            yield return(UIETestEvents.Mouse.SimulateClick(colorField.labelElement));

            Assert.IsTrue(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableEditingClassName));
            Assert.IsFalse(colorField.ClassListContains(BuilderConstants.ReadOnlyStyleClassName));
            Assert.IsTrue(handler.variableInfoTooltip.visible);
            Assert.IsTrue(handler.variableInfoTooltip.IsFocused());
            Assert.IsNotNull(handler.variableInfoTooltip.currentHandler);
            Assert.AreEqual(handler.variableInfoTooltip.currentHandler, handler);

            // Click anywhere else to remove focus
            selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);
            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            Assert.IsFalse(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableEditingClassName));
            Assert.IsFalse(handler.variableInfoTooltip.isShowing);
            Assert.IsNull(handler.variableInfoTooltip.currentHandler);
            yield return(null);
        }
Exemplo n.º 23
0
        public IEnumerator EnsureChangesToUSSMadeExternallyAreReloaded()
        {
            const string testSelector = ".externally-added-selector";

            CreateTestUXMLFile();
            CreateTestUSSFile();

            var asset      = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestUXMLFilePath);
            var assetCount = asset.visualElementAssets.Count;

            BuilderWindow.LoadDocument(asset);
            Assert.AreEqual(BuilderWindow.document.visualTreeAsset, asset);

            yield return(CodeOnlyAddUSSToDocument(k_TestUSSFilePath));

            Assert.NotNull(BuilderWindow.document.activeStyleSheet);

            // Save
            BuilderWindow.document.SaveUnsavedChanges(k_TestUXMLFilePath, false);

            var styleSheetCopy = BuilderWindow.document.activeStyleSheet.DeepCopy();

            styleSheetCopy.AddSelector(testSelector);
            var styleSheetCopyUSS = styleSheetCopy.GenerateUSS();

            File.WriteAllText(k_TestUSSFilePath, styleSheetCopyUSS);
            AssetDatabase.ImportAsset(k_TestUSSFilePath, ImportAssetOptions.ForceUpdate);

            yield return(UIETestHelpers.Pause(1));

            // Make sure the UI Builder reloaded.
            var activeStyleSheet = BuilderWindow.document.activeStyleSheet;
            var complexSelector  = activeStyleSheet.complexSelectors.First();

            Assert.NotNull(complexSelector);
            Assert.AreEqual(StyleSheetToUss.ToUssSelector(complexSelector), testSelector);
        }
Exemplo n.º 24
0
        public IEnumerator UnloadSubDocumentsOnFileOpen()
        {
            var panel = BuilderWindow.rootVisualElement.panel as BaseVisualElementPanel;
            var menu  = panel.contextualMenuManager as BuilderTestContextualMenuManager;

            Assert.That(menu, Is.Not.Null);
            Assert.That(menu.menuIsDisplayed, Is.False);

            // Load Test UXML File
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_ParentTestUXMLPath);

            Assert.That(asset, Is.Not.Null);
            BuilderWindow.LoadDocument(asset);
            HierarchyPane.elementHierarchyView.ExpandAllChildren();
            yield return(UIETestHelpers.Pause(1));

            // Open child
            string nameOfChildSubDocument = "#ChildTestUXMLDocument";
            var    childInHierarchy       = BuilderTestsHelper.GetExplorerItemsWithName(HierarchyPane, nameOfChildSubDocument);

            // Simulate right click on child TemplateContainer
            yield return(UIETestEvents.Mouse.SimulateClick(childInHierarchy[0], MouseButton.RightMouse));

            Assert.That(menu.menuIsDisplayed, Is.True);

            var subdocumentClick = menu.FindMenuAction(BuilderConstants.ExplorerHierarchyPaneOpenSubDocument);

            Assert.That(subdocumentClick, Is.Not.Null);

            subdocumentClick.Execute();
            yield return(UIETestHelpers.Pause(1));

            // Main part: opening NewDocument makes it the only document
            Assert.AreEqual(2, BuilderWindow.document.openUXMLFiles.Count);
            BuilderWindow.rootVisualElement.Q <BuilderToolbar>().NewDocument();
            Assert.AreEqual(1, BuilderWindow.document.openUXMLFiles.Count);
        }
Exemplo n.º 25
0
        public IEnumerator EnsureChangesToUXMLMadeExternallyAreReloaded()
        {
            const string testLabelName = "externally-added-label";

            CreateTestUXMLFile();

            var asset      = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_TestUXMLFilePath);
            var assetCount = asset.visualElementAssets.Count;

            BuilderWindow.LoadDocument(asset);
            Assert.AreEqual(BuilderWindow.document.visualTreeAsset, asset);

            yield return(AddTextFieldElement());

            Assert.AreEqual(asset.visualElementAssets.Count, assetCount + 1);

            // Save
            BuilderWindow.document.SaveUnsavedChanges(k_TestUXMLFilePath, false);

            var vtaCopy    = BuilderWindow.document.visualTreeAsset.DeepCopy();
            var newElement = new VisualElementAsset(typeof(Label).ToString());

            newElement.AddProperty("name", testLabelName);
            vtaCopy.AddElement(vtaCopy.GetRootUXMLElement(), newElement);
            var vtaCopyUXML = vtaCopy.GenerateUXML(k_TestUXMLFilePath, true);

            File.WriteAllText(k_TestUXMLFilePath, vtaCopyUXML);
            AssetDatabase.ImportAsset(k_TestUXMLFilePath, ImportAssetOptions.ForceUpdate);

            yield return(UIETestHelpers.Pause(1));

            // Make sure the UI Builder reloaded.
            var label = BuilderWindow.documentRootElement.Q <Label>(testLabelName);

            Assert.NotNull(label);
        }
 public void TearDown()
 {
     ForceNewDocument();
     MouseCaptureController.ReleaseMouse();
     BuilderWindow.Close();
 }
        public IEnumerator SubDocumentFunctionalityViaRightClickMenu()
        {
            var panel = BuilderWindow.rootVisualElement.panel as BaseVisualElementPanel;
            var menu  = panel.contextualMenuManager as BuilderTestContextualMenuManager;

            Assert.That(menu, Is.Not.Null);
            Assert.That(menu.menuIsDisplayed, Is.False);

            // Load Test UXML File
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_ParentTestUXMLPath);

            Assert.That(asset, Is.Not.Null);
            BuilderWindow.LoadDocument(asset);
            yield return(UIETestHelpers.Pause(1));

            // Check that Breadcrumbs toolbar is NOT present
            var toolbar            = ViewportPane.Q <BuilderToolbar>();
            var breadcrumbsToolbar = toolbar.Q <Toolbar>(BuilderToolbar.BreadcrumbsToolbarName);
            var breadcrumbs        = toolbar.Q <ToolbarBreadcrumbs>(BuilderToolbar.BreadcrumbsName);

            Assert.IsNotNull(breadcrumbsToolbar);
            Assert.AreEqual((StyleEnum <DisplayStyle>)DisplayStyle.None, breadcrumbsToolbar.style.display);
            Assert.AreEqual(0, breadcrumbs.childCount);

            // Check that child is instantiated
            string nameOfChildSubDocument = "#ChildTestUXMLDocument";
            var    childInHierarchy       = BuilderTestsHelper.GetExplorerItemsWithName(HierarchyPane, nameOfChildSubDocument);

            Assert.AreEqual(1, childInHierarchy.Count);
            Assert.NotNull(childInHierarchy[0]);

            // Simulate right click on child TemplateContainer
            yield return(UIETestEvents.Mouse.SimulateClick(childInHierarchy[0], MouseButton.RightMouse));

            Assert.That(menu.menuIsDisplayed, Is.True);

            var subdocumentClick = menu.FindMenuAction(BuilderConstants.ExplorerHierarchyPaneOpenSubDocument);

            Assert.That(subdocumentClick, Is.Not.Null);

            subdocumentClick.Execute();
            yield return(UIETestHelpers.Pause(1));

            // Get parent document
            var parentRoot = BuilderTestsHelper.GetHeaderItem(HierarchyPane);

            Assert.NotNull(parentRoot);

            // Breadcrumbs is displaying
            Assert.AreEqual(2, breadcrumbs.childCount);
            Assert.AreEqual(breadcrumbsToolbar.style.display, (StyleEnum <DisplayStyle>)DisplayStyle.Flex);

            // Click back to get to Parent
            yield return(UIETestEvents.Mouse.SimulateClick(parentRoot, MouseButton.RightMouse));

            Assert.That(menu.menuIsDisplayed, Is.True);

            var parentClick = menu.FindMenuAction(BuilderConstants.ExplorerHierarchyReturnToParentDocument);

            Assert.That(parentClick, Is.Not.Null);
            parentClick.Execute();

            yield return(UIETestHelpers.Pause(1));

            Assert.AreEqual(1, BuilderWindow.documentRootElement.childCount);

            Assert.AreEqual(0, breadcrumbs.childCount);
            Assert.AreEqual(breadcrumbsToolbar.style.display, (StyleEnum <DisplayStyle>)DisplayStyle.None);
        }