public void AnalysisStep_TryGetPreviousSibling_SkipNonVisibleNodes() { var list = new List <AnalysisStepNode>(); var target = new AnalysisStepNode(resultId: 0, runIndex: 0); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0) { FilePath = Expected }); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0) { Visibility = Visibility.Collapsed }); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0) { Visibility = Visibility.Hidden }); list.Add(target); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0)); AnalysisStepNode resultNode; bool result = AnalysisStep.TryGetPreviousSibling(list, target, out resultNode); result.Should().BeTrue(); resultNode.FilePath.Should().Be(Expected); }
internal void IntelligentExpand() { if (this.Location?.Importance == ThreadFlowLocationImportance.Essential) { AnalysisStepNode current = this; while (current != null) { current.IsExpanded = true; current = current.Parent; } } else { this.IsExpanded = false; } if (this.Children != null) { foreach (AnalysisStepNode child in this.Children) { child.IntelligentExpand(); } } }
public void AnalysisStepNode_SelectedHighlightColor() { var analysisStepNode = new AnalysisStepNode(resultId: 0, runIndex: 0) { Location = new ThreadFlowLocation(), }; analysisStepNode.Location.Importance = ThreadFlowLocationImportance.Essential; analysisStepNode.SelectedSourceHighlightColor.Should().Be("CodeAnalysisCurrentStatementSelection"); }
public void AnalysisStep_TryGetPreviousSibling_NullList() { List <AnalysisStepNode> list = null; var node = new AnalysisStepNode(resultId: 0, runIndex: 0); AnalysisStepNode resultNode; bool result = AnalysisStep.TryGetPreviousSibling(list, node, out resultNode); result.Should().BeFalse(); }
public void AnalysisStep_TryGetIndexInAnalysisStepNodeList_NullList() { List <AnalysisStepNode> list = null; var node = new AnalysisStepNode(resultId: 0, runIndex: 0); int index; bool result = AnalysisStep.TryGetIndexInAnalysisStepNodeList(list, node, out index); result.Should().BeFalse(); }
internal void SetVerbosity(ThreadFlowLocationImportance importance) { Visibility visibility = Visibility.Visible; ThreadFlowLocationImportance myImportance = this.Location?.Importance ?? ThreadFlowLocationImportance.Unimportant; switch (importance) { case ThreadFlowLocationImportance.Essential: if (myImportance != ThreadFlowLocationImportance.Essential) { visibility = Visibility.Collapsed; } break; case ThreadFlowLocationImportance.Important: if (myImportance == ThreadFlowLocationImportance.Unimportant) { visibility = Visibility.Collapsed; } break; default: visibility = Visibility.Visible; break; } if (visibility == Visibility.Visible) { AnalysisStepNode current = this; while (current != null) { current.Visibility = Visibility.Visible; current = current.Parent; } } else { this.Visibility = Visibility.Collapsed; } if (this.Children != null) { foreach (AnalysisStepNode child in this.Children) { child.SetVerbosity(importance); } } }
// go to parent, find self, find previous/next, make sure not to roll off internal AnalysisStepNode FindPrevious() { AnalysisStepNode previous = this.FindPrevious(this.SelectedItem, true); if (previous == null) { // no previous exists, current remains selected return(this.SelectedItem); } else { return(previous); } }
public void AnalysisStep_TryGetNextSibling_LastNode() { var list = new List <AnalysisStepNode>(); var target = new AnalysisStepNode(resultId: 0, runIndex: 0); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0)); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0)); list.Add(target); AnalysisStepNode resultNode; bool result = AnalysisStep.TryGetNextSibling(list, target, out resultNode); result.Should().BeFalse(); }
internal AnalysisStepNode FindNext() { AnalysisStepNode next = this.FindNext(this.SelectedItem, true); if (next == null) { // no next exists, current remains selected return(this.SelectedItem); } else { return(next); } }
public void AnalysisStep_TryGetIndexInAnalysisStepNodeList_MiddleNode() { var list = new List <AnalysisStepNode>(); var target = new AnalysisStepNode(resultId: 0, runIndex: 0); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0)); list.Add(target); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0)); int index; bool result = AnalysisStep.TryGetIndexInAnalysisStepNodeList(list, target, out index); result.Should().BeTrue(); index.Should().Be(1); }
public void AnalysisStepNode_DefaultHighlightColor() { var analysisStepNode = new AnalysisStepNode(resultId: 0, runIndex: 0) { Location = new ThreadFlowLocation(), }; analysisStepNode.Location.Importance = ThreadFlowLocationImportance.Essential; analysisStepNode.DefaultSourceHighlightColor.Should().Be("CodeAnalysisKeyEventSelection"); analysisStepNode.Location.Importance = ThreadFlowLocationImportance.Important; analysisStepNode.DefaultSourceHighlightColor.Should().Be("CodeAnalysisLineTraceSelection"); analysisStepNode.Location.Importance = ThreadFlowLocationImportance.Unimportant; analysisStepNode.DefaultSourceHighlightColor.Should().Be("CodeAnalysisLineTraceSelection"); }
public void AnalysisStep_TryGetPreviousSibling_FirstNode() { var list = new List <AnalysisStepNode>(); var target = new AnalysisStepNode(resultId: 0, runIndex: 0); list.Add(target); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0) { FilePath = Expected }); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0)); AnalysisStepNode resultNode; bool result = AnalysisStep.TryGetPreviousSibling(list, target, out resultNode); result.Should().BeFalse(); }
public void AnalysisStepNode_TextMargin() { var analysisStepNode = new AnalysisStepNode(resultId: 0, runIndex: 0); analysisStepNode.TextMargin.Should().NotBeNull(); analysisStepNode.TextMargin.Left.Should().Be(0); analysisStepNode.TextMargin.Right.Should().Be(0); analysisStepNode.TextMargin.Top.Should().Be(0); analysisStepNode.TextMargin.Bottom.Should().Be(0); analysisStepNode.NestingLevel = s_random.Next(0, 30); analysisStepNode.TextMargin.Left.Should().Be(AnalysisStepNode.IndentWidth * analysisStepNode.NestingLevel); analysisStepNode.TextMargin.Right.Should().Be(0); analysisStepNode.TextMargin.Top.Should().Be(0); analysisStepNode.TextMargin.Bottom.Should().Be(0); }
public void AnalysisStep_TryGetNextSibling_MiddleNode() { var list = new List <AnalysisStepNode>(); var target = new AnalysisStepNode(resultId: 0, runIndex: 0); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0)); list.Add(target); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0) { FilePath = Expected }); AnalysisStepNode resultNode; bool result = AnalysisStep.TryGetNextSibling(list, target, out resultNode); result.Should().BeTrue(); resultNode.FilePath.Should().Be(Expected); }
internal static bool TryGetIndexInAnalysisStepNodeList(IList <AnalysisStepNode> list, AnalysisStepNode givenNode, out int index) { index = -1; if (list != null) { for (int i = 0; i < list.Count; i++) { AnalysisStepNode listNode = list[i]; if (listNode == givenNode) { index = i; break; } } } return(index != -1); }
public void AnalysisStep_TryGetLastItem_NoVisibleNodes() { var list = new List <AnalysisStepNode>(); var target = new AnalysisStepNode(resultId: 0, runIndex: 0); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0) { Visibility = Visibility.Collapsed }); list.Add(new AnalysisStepNode(resultId: 0, runIndex: 0) { Visibility = Visibility.Hidden }); AnalysisStepNode resultNode; bool result = AnalysisStep.TryGetLastItem(list, out resultNode); result.Should().BeFalse(); }
internal static bool TryGetLastItem(IList <AnalysisStepNode> items, out AnalysisStepNode lastItem) { lastItem = null; if (items != null) { for (int i = items.Count - 1; i >= 0; i--) { AnalysisStepNode nextNode = items[i]; if (nextNode.Visibility == System.Windows.Visibility.Visible) { lastItem = nextNode; break; } } } return(lastItem != null); }
internal static bool TryGetFirstItem(IList <AnalysisStepNode> items, out AnalysisStepNode firstItem) { firstItem = null; if (items != null) { for (int i = 0; i < items.Count; i++) { AnalysisStepNode nextNode = items[i]; if (nextNode.Visibility == System.Windows.Visibility.Visible) { firstItem = nextNode; break; } } } return(firstItem != null); }
internal AnalysisStepNode FindPrevious(AnalysisStepNode currentNode, bool includeChildren) { if (currentNode == null) { return(null); } AnalysisStepNode previousNode; // Find the next visible sibling. AnalysisStepNode currentParent = currentNode.Parent; IList <AnalysisStepNode> nodeList; if (currentParent == null) { nodeList = this.TopLevelNodes; } else { nodeList = currentParent.Children; } if (TryGetPreviousSibling(nodeList, currentNode, out previousNode)) { AnalysisStepNode previousNodeChild; if (includeChildren && TryGetLastItem(previousNode.Children, out previousNodeChild)) { return(previousNodeChild); } else { return(previousNode); } } else if (currentParent?.Visibility == System.Windows.Visibility.Visible) { return(currentParent); } // Walk up the tree trying to find the previous node. return(this.FindPrevious(currentParent, false)); }
internal static bool TryGetNextSibling(IList <AnalysisStepNode> items, AnalysisStepNode currentItem, out AnalysisStepNode nextSibling) { nextSibling = null; int currentIndex; if (TryGetIndexInAnalysisStepNodeList(items, currentItem, out currentIndex)) { for (int i = currentIndex + 1; i < items.Count; i++) { AnalysisStepNode nextNode = items[i]; if (nextNode.Visibility == System.Windows.Visibility.Visible) { nextSibling = nextNode; break; } } } return(nextSibling != null); }
internal static bool TryGetPreviousSibling(IList <AnalysisStepNode> items, AnalysisStepNode currentItem, out AnalysisStepNode previousSibling) { previousSibling = null; int currentIndex; if (TryGetIndexInAnalysisStepNodeList(items, currentItem, out currentIndex)) { for (int i = currentIndex - 1; i >= 0; i--) { AnalysisStepNode previousNode = items[i]; if (previousNode.Visibility == System.Windows.Visibility.Visible) { previousSibling = previousNode; break; } } } return(previousSibling != null); }
internal AnalysisStepNode FindNext(AnalysisStepNode currentNode, bool includeChildren) { if (currentNode == null) { return(null); } // For Call nodes, find the first visible child. AnalysisStepNode nextNode; if (includeChildren && TryGetFirstItem(currentNode.Children, out nextNode)) { return(nextNode); } // For all other nodes or Call nodes without a visible child, find the next visible sibling. AnalysisStepNode currentParent = currentNode.Parent; IList <AnalysisStepNode> nodeList; if (currentParent == null) { nodeList = this.TopLevelNodes; } else { nodeList = currentParent.Children; } if (TryGetNextSibling(nodeList, currentNode, out nextNode)) { return(nextNode); } // Walk up the tree trying to find the next node. return(this.FindNext(currentParent, false)); }