public void Pop_ThrowsIndexOutOfRangeException_OnZeroSize() { var stack = new TraverseStack <int>(); Action action = () => stack.Pop(); action.Should().Throw <IndexOutOfRangeException>(); }
public void TraverseToElementAndReturnBack_ReturnsCorrectSequence(params int[] elements) { var stack = new TraverseStack <int>(); foreach (var element in elements) { stack.Push(element); } var traverseResults = elements .Select(element => stack.TraverseToElementAndReturnBack(element).ToList()) .ToList(); for (var i = 0; i < traverseResults.Count; i++) { var explicitTraverse = new List <int>(); var index = elements.Length - 1; while (index >= 0) { explicitTraverse.Add(elements[index]); if (elements[index] == elements[i]) { break; } index--; } for (index = index + 1; index < elements.Length; index++) { explicitTraverse.Add(elements[index]); } traverseResults[i].Should().BeEquivalentTo(explicitTraverse); } }
public void Clear() { UpdateBuffer = new SimplexWrap <VERTEX> [Dimension]; UpdateIndices = new int[Dimension]; InputVertices = null; CurrentVertex = null; FurthestVertex = null; MaxDistance = float.NegativeInfinity; ConvexSimplexs.Clear(); AffectedFaceBuffer.Clear(); TraverseStack.Clear(); SingularVertices.Clear(); ConeFaceBuffer.Clear(); ObjectManager.Clear(); UnprocessedFaces.Clear(); EmptyBuffer.Clear(); BeyondBuffer.Clear(); for (int i = 0; i < CONNECTOR_TABLE_SIZE; i++) { ConnectorTable[i].Clear(); } }
public void Push_ThrowsArgumentException_OnEqualElements() { var stack = new TraverseStack <int>(); stack.Push(5); Action action = () => stack.Push(5); action.Should().Throw <ArgumentException>(); }
public void Remove_ThrowsArgumentException_OnInvalidElement() { var stack = new TraverseStack <int>(); stack.Push(5); stack.Push(124); Action action = () => stack.Remove(1); action.Should().Throw <ArgumentException>(); }
public void Contains_ReturnsCorrectValues(int numberToCheck, bool expectedValue, params int[] numbers) { var stack = new TraverseStack <int>(); foreach (var number in numbers) { stack.Push(number); } stack.Contains(numberToCheck).Should().Be(expectedValue); }
public void TraverseToElementAndReturnBack_ThrowsArgumentException_OnInvalidElement() { var stack = new TraverseStack <int>(); stack.Push(5); stack.Push(124); Action action = () => stack.TraverseToElementAndReturnBack(1).ToList(); action.Should().Throw <ArgumentException>(); }
public void PushAndPop_ReturnsCorrectElementsInCorrectOrder(params int[] elements) { var stack = new TraverseStack <int>(); foreach (var element in elements) { stack.Push(element); } foreach (var element in elements.Reverse()) { stack.Pop().Should().Be(element); } }
public void Remove_DeletesElementsCorrectly(int amountOfDeletions, params int[] elements) { var random = new Random(); var stack = new TraverseStack <int>(); foreach (var t in elements) { stack.Push(t); } var reversedElements = elements.Reverse().ToList(); for (var i = 0; i < amountOfDeletions; i++) { var randomValue = reversedElements[random.Next(reversedElements.Count)]; reversedElements.Remove(randomValue); stack.Remove(randomValue); var stackAsList = stack.ToList(); stackAsList.Should().BeEquivalentTo(reversedElements); } }
/// <summary> /// Recursively traverse all the relevant faces. /// </summary> void TraverseAffectedFaces(int currentFace) { TraverseStack.Clear(); TraverseStack.Push(currentFace); AffectedFaceFlags[currentFace] = true; while (TraverseStack.Count > 0) { var top = FacePool[TraverseStack.Pop()]; for (int i = 0; i < Dimension; i++) { var adjFace = top.AdjacentFaces[i]; if (!AffectedFaceFlags[adjFace] && MathHelper.GetVertexDistance(CurrentVertex, FacePool[adjFace]) >= PlaneDistanceTolerance) { AffectedFaceBuffer.Add(adjFace); AffectedFaceFlags[adjFace] = true; TraverseStack.Push(adjFace); } } } }