public void DumpAndVerifyVisualTree(UIElement root, string masterFilePrefix, string messageOnError = null)
            {
                VisualTreeLog.LogDebugInfo("DumpVisualTreeAndCompareWithMaster with masterFilePrefix " + masterFilePrefix);

                string expectedContent = "";
                string content         = DumpVisualTree(root, _translator, _filter, _logger);

                MasterFileStorage storage = new MasterFileStorage(!_shouldLogMasterFile, masterFilePrefix);
                string            bestMatchedMasterFileName = storage.BestMatchedMasterFileName;
                string            expectedMasterFileName    = storage.ExpectedMasterFileName;

                VisualTreeLog.LogDebugInfo("Target master file: " + expectedMasterFileName);
                VisualTreeLog.LogDebugInfo("Best matched master file: " + bestMatchedMasterFileName);

                if (!string.IsNullOrEmpty(bestMatchedMasterFileName))
                {
                    expectedContent = MasterFileStorage.GetMasterFileContent(bestMatchedMasterFileName);
                }

                string result = new VisualTreeOutputCompare(content, expectedContent).ToString();

                if (!string.IsNullOrEmpty(result))
                {
                    storage.LogMasterFile(expectedMasterFileName, content);
                    storage.LogMasterFile(expectedMasterFileName + ".orig", expectedContent);

                    if (!string.IsNullOrEmpty(messageOnError))
                    {
                        _testResult.AppendLine(messageOnError);
                        _testResult.AppendLine(string.Format("{0}.xml and {0}.orig.xaml is logged", expectedMasterFileName));
                    }
                    _testResult.AppendLine(result);
                }
            }
        public static void ChangeRequestedTheme(UIElement root, ElementTheme theme)
        {
            FrameworkElement element = root as FrameworkElement;

            VisualTreeLog.LogDebugInfo("Request Theme: " + theme.ToString());
            RunOnUIThread.Execute(() =>
            {
                element.RequestedTheme = theme;
            });
        }
        public static string DumpVisualTree(DependencyObject root, IPropertyValueTranslator translator = null, IFilter filter = null, IVisualTreeLogger logger = null)
        {
            VisualTreeLog.LogDebugInfo("DumpVisualTree");

            string content = "";

            RunOnUIThread.Execute(() =>
            {
                content = VisualTreeDumper.DumpToXML(root, translator, filter, logger);
            });
            return(content);
        }
        public static UIElement SetupVisualTree(string xaml)
        {
            VisualTreeLog.LogDebugInfo("SetupVisualTree " + xaml);

            UIElement root = null;

            RunOnUIThread.Execute(() =>
            {
                root = (UIElement)XamlReader.Load(xaml);
                MUXControlsTestApp.App.TestContentRoot = root;
            });

            MUXControlsTestApp.Utilities.IdleSynchronizer.Wait();
            return(root);
        }
예제 #5
0
        public static bool VerifyVisualTree(UIElement root, string masterFilePrefix, Theme theme = Theme.None, IPropertyValueTranslator translator = null, IFilter filter = null, IVisualTreeLogger logger = null)
        {
            VisualTreeLog.LogInfo("VerifyVisualTree for theme " + theme.ToString());
            TestExecution helper = new TestExecution(translator, filter, logger, AlwaysLogMasterFile);

            if (theme == Theme.None)
            {
                helper.DumpAndVerifyVisualTree(root, masterFilePrefix);
            }
            else
            {
                List <ElementTheme> themes = new List <ElementTheme>();
                if (theme == Theme.Dark)
                {
                    themes.Add(ElementTheme.Dark);
                }
                else if (theme == Theme.Light)
                {
                    themes.Add(ElementTheme.Light);
                }
                else if (theme == Theme.All)
                {
                    themes = new List <ElementTheme>()
                    {
                        ElementTheme.Dark, ElementTheme.Light
                    };
                }

                foreach (var requestedTheme in themes)
                {
                    string themeName = requestedTheme.ToString();
                    VisualTreeLog.LogInfo("Change RequestedTheme to " + themeName);
                    ChangeRequestedTheme(root, requestedTheme);

                    helper.DumpAndVerifyVisualTree(root, masterFilePrefix + "_" + themeName, "DumpAndVerifyVisualTree for " + themeName);
                }
            }
            if (helper.HasError())
            {
                Verify.Fail(helper.GetTestResult(), "Test Failed");
                return(false);
            }
            return(true);
        }