public void Remove_DeletesElementsCorrectly(int amountOfDeletions, params int[] elements) { var random = new Random(); var stack = new HashStack <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); } }