public IEnumerator DragDropToReorderSelectors()
        {
#if UNITY_2020_1_OR_NEWER
            int selectionCount = 2;
#else
            int selectionCount = 1;
#endif

            yield return(CodeOnlyAddUSSToDocument(k_ColorsTestUSSPath));

            yield return(CodeOnlyAddUSSToDocument(k_LayoutTestUSSPath));

            var colorsUSS = BuilderWindow.document.activeOpenUXMLFile.openUSSFiles[0].Sheet;

            Assert.AreEqual(".unity-button", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[0]));
            Assert.AreEqual(".unity-label", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[1]));
            Assert.AreEqual("#builder-test", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[2]));

            var unityButtonSelectorItem = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, ".unity-button")[0];
            yield return(UIETestEvents.Mouse.SimulateClick(unityButtonSelectorItem));

#if UNITY_2020_1_OR_NEWER
            var unityLabelSelectorItem = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, ".unity-label")[0];
            yield return(UIETestEvents.Mouse.SimulateClick(unityLabelSelectorItem, MouseButton.LeftMouse, EventModifiers.Shift));
#endif

            Assert.AreEqual(selectionCount, Selection.selectionCount);

            var builderTestSelectorItem = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, "#builder-test")[0];
            var reorderZoneBelow        = builderTestSelectorItem.Q("reorder-zone-below");
            Assert.NotNull(reorderZoneBelow);

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 unityButtonSelectorItem.worldBound.center,
                                                                 reorderZoneBelow.worldBound.center));

#if UNITY_2020_1_OR_NEWER
            Assert.AreEqual("#builder-test", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[0]));
            Assert.AreEqual(".unity-button", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[1]));
            Assert.AreEqual(".unity-label", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[2]));
#else
            Assert.AreEqual(".unity-label", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[0]));
            Assert.AreEqual("#builder-test", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[1]));
            Assert.AreEqual(".unity-button", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[2]));
#endif

            Assert.AreEqual(selectionCount, Selection.selectionCount);
        }
        public IEnumerator VariableSearch_SelectedInfo()
        {
            yield return(EditVariable("Border/Width/Left"));

            yield return(UIETestEvents.KeyBoard.SimulateTyping(builder, "var"));

            yield return(WaitForUIUpdate());

            var listView    = currentHandler.completer.popup.listView;
            var varInfoView = currentHandler.completer.popup.Q <VariableInfoView>();

            Assert.AreEqual(varInfoView.resolvedStyle.display, DisplayStyle.None);

            // Select the first element
            listView.selectedIndex = 1;

            yield return(WaitForUIUpdate());

            var    info        = listView.selectedItem as VariableInfo;
            var    styleSheet  = info.value.sheet;
            var    fullPath    = AssetDatabase.GetAssetPath(styleSheet);
            string displayPath = Path.GetFileName(fullPath);
            var    valueText   = StyleSheetToUss.ValueHandleToUssString(info.value.sheet, new UssExportOptions(), "", info.value.handle);

            Assert.AreEqual(varInfoView.resolvedStyle.display, DisplayStyle.Flex);
            Assert.AreEqual(varInfoView.variableName, info.name);
            Assert.AreEqual(varInfoView.variableValue, valueText);
            Assert.AreEqual(varInfoView.sourceStyleSheet, displayPath);
            if (string.IsNullOrEmpty(info.description))
            {
                Assert.True(string.IsNullOrEmpty(varInfoView.description));
            }
            else
            {
                Assert.AreEqual(varInfoView.description, info.description);
            }
            Assert.AreEqual(varInfoView.Q("description-container").resolvedStyle.display, DisplayStyle.None);
            Assert.AreEqual(varInfoView.Q("preview").resolvedStyle.display, DisplayStyle.None);

            yield return(null);
        }
예제 #3
0
        public IEnumerator EnsureChangesToUSSMadeExternallyAreReloaded()
        {
            const string testSelector = ".externally-added-selector";

            CreateTestUXMLFile();
            CreateTestUSSFile();

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

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

            yield return(CodeOnlyAddUSSToDocument(k_TestUSSFilePath));

            Assert.NotNull(builder.document.activeStyleSheet);

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

            var styleSheetCopy = builder.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 = builder.document.activeStyleSheet;
            var complexSelector  = activeStyleSheet.complexSelectors.First();

            Assert.NotNull(complexSelector);
            Assert.AreEqual(StyleSheetToUss.ToUssSelector(complexSelector), testSelector);
        }
        public IEnumerator DragToReparentToMoveSelectorsBetweenStyleSheets()
        {
#if UNITY_2020_1_OR_NEWER
            int selectionCount = 2;
#else
            int selectionCount = 1;
#endif

            yield return(CodeOnlyAddUSSToDocument(k_ColorsTestUSSPath));

            yield return(CodeOnlyAddUSSToDocument(k_LayoutTestUSSPath));

            var colorsUSS = BuilderWindow.document.activeOpenUXMLFile.openUSSFiles[0].Sheet;
            var layoutUSS = BuilderWindow.document.activeOpenUXMLFile.openUSSFiles[1].Sheet;

            Assert.AreEqual(".unity-button", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[0]));
            Assert.AreEqual(".unity-label", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[1]));
            Assert.AreEqual("#builder-test", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[2]));

            var unityButtonSelectorItem = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, ".unity-button")[0];
            yield return(UIETestEvents.Mouse.SimulateClick(unityButtonSelectorItem));

#if UNITY_2020_1_OR_NEWER
            var unityLabelSelectorItem = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, ".unity-label")[0];
            yield return(UIETestEvents.Mouse.SimulateClick(unityLabelSelectorItem, MouseButton.LeftMouse, EventModifiers.Shift));
#endif

            Assert.AreEqual(selectionCount, Selection.selectionCount);

            var builderTestSelectorItem = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, "#builder-test")[1];
            var reorderZoneAbove        = builderTestSelectorItem.Q("reorder-zone-above");
            Assert.NotNull(reorderZoneAbove);

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 unityButtonSelectorItem.worldBound.center,
                                                                 reorderZoneAbove.worldBound.center));

            Assert.AreEqual(selectionCount, Selection.selectionCount);

#if UNITY_2020_1_OR_NEWER
            Assert.AreEqual(1, colorsUSS.complexSelectors.Length);
            Assert.AreEqual("#builder-test", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[0]));

            Assert.AreEqual(5, layoutUSS.complexSelectors.Length);
            Assert.AreEqual(".unity-button", StyleSheetToUss.ToUssSelector(layoutUSS.complexSelectors[0]));
            Assert.AreEqual(".unity-label", StyleSheetToUss.ToUssSelector(layoutUSS.complexSelectors[1]));
            Assert.AreEqual(".unity-button", StyleSheetToUss.ToUssSelector(layoutUSS.complexSelectors[2]));
            Assert.AreEqual(".unity-label", StyleSheetToUss.ToUssSelector(layoutUSS.complexSelectors[3]));
            Assert.AreEqual("#builder-test", StyleSheetToUss.ToUssSelector(layoutUSS.complexSelectors[4]));
#else
            // Cannot count selectors because we now create fake selectors for variables.
            //Assert.AreEqual(2, colorsUSS.complexSelectors.Length);
            Assert.AreEqual(".unity-label", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[0]));
            Assert.AreEqual("#builder-test", StyleSheetToUss.ToUssSelector(colorsUSS.complexSelectors[1]));

            //Assert.AreEqual(4, layoutUSS.complexSelectors.Length);
            Assert.AreEqual(".unity-button", StyleSheetToUss.ToUssSelector(layoutUSS.complexSelectors[0]));
            Assert.AreEqual(".unity-label", StyleSheetToUss.ToUssSelector(layoutUSS.complexSelectors[1]));
            Assert.AreEqual(".unity-button", StyleSheetToUss.ToUssSelector(layoutUSS.complexSelectors[2]));
            Assert.AreEqual("#builder-test", StyleSheetToUss.ToUssSelector(layoutUSS.complexSelectors[3]));
#endif
        }