예제 #1
0
        public void RefreshTestTree(IProgressMonitor progressMonitor)
        {
            using (progressMonitor.BeginTask("Refreshing test tree.", 100))
            {
                eventAggregator.Send(this, new TestsReset());

                var options = new TreeBuilderOptions
                {
                    TreeViewCategory   = treeViewCategory,
                    NamespaceHierarchy = optionsController.NamespaceHierarchy
                };

                using (var subProgressMonitor = progressMonitor.CreateSubProgressMonitor(99))
                {
                    ReadReport(report => testTreeModel.BuildTestTree(subProgressMonitor,
                                                                     report.TestModel, options));
                }
            }
        }
예제 #2
0
        public void BuildTestTree(IProgressMonitor progressMonitor, TestModelData testModelData,
                                  TreeBuilderOptions options)
        {
            if (string.IsNullOrEmpty(options.TreeViewCategory))
            {
                throw new ArgumentException("Tree view category cannot be null or empty.");
            }

            int count = CountTestData(testModelData.RootTest);

            using (progressMonitor.BeginTask("Building test tree", count))
            {
                ((TreeModel)innerTreeModel).Root.Nodes.Clear();

                TestTreeNode root = null;
                foreach (var treeBuilder in treeBuilders)
                {
                    if (!treeBuilder.CanHandle(options.TreeViewCategory))
                    {
                        continue;
                    }

                    root = treeBuilder.BuildTree(progressMonitor, testModelData, options);
                    break;
                }

                if (root == null)
                {
                    throw new Exception(string.Format("Could not find a tree builder for {0}",
                                                      options.TreeViewCategory));
                }

                ((TreeModel)innerTreeModel).Root.Nodes.Add(root);

                OnStructureChanged(new TreePathEventArgs(new TreePath(root)));
            }
        }