private static void AssertCollectionContainsExactlyUnordered(CopyOnWriteCollection <int> collection, IEnumerable <int> expectedItems) { foreach (var item in expectedItems) { Assert.True(collection.TryRemove(item)); } Assert.Equal(0, collection.Count); }
public void TryRemoveShouldReturnTrueForKnownItem() { var knownItems = Enumerable.Range(0, 5).ToArray(); var collection = new CopyOnWriteCollection <int>(); collection.AddRange(knownItems); Assert.True(collection.TryRemove(knownItems[2])); }
public void TryRemoveShouldReturnFalseForUnknownItem() { const int unknownItem = -1; var knownItems = Enumerable.Range(0, 5).ToArray(); var collection = new CopyOnWriteCollection <int>(); collection.AddRange(knownItems); Assert.False(collection.TryRemove(unknownItem)); }
public void TryRemoveOfLastItemShouldEmptyTheArray() { var collection = new CopyOnWriteCollection <int>(); const int lastItem = 3; collection.AddRange(new[] { lastItem }); collection.TryRemove(lastItem); Assert.Equal(new int[0], collection.Snapshot); }
public void TryRemoveShouldDecrementCountForKnownItem() { var knownItems = Enumerable.Range(0, 5).ToArray(); var collection = new CopyOnWriteCollection <int>(); collection.AddRange(knownItems); collection.TryRemove(knownItems[2]); Assert.Equal(knownItems.Length - 1, collection.Count); }
public void TryRemoveShouldRemoveKnownItem() { var knownItems = Enumerable.Range(0, 5).ToArray(); var collection = new CopyOnWriteCollection <int>(); collection.AddRange(knownItems); collection.TryRemove(knownItems[2]); Assert.DoesNotContain(knownItems[2], collection.Snapshot); }
public void TryRemoveShouldNotChangeCountForUnknownItem() { const int unknownItem = -1; var knownItems = Enumerable.Range(0, 5).ToArray(); var collection = new CopyOnWriteCollection <int>(); collection.AddRange(knownItems); collection.TryRemove(unknownItem); Assert.Equal(knownItems.Length, collection.Count); }
public void TryRemoveShouldAllowParallelCalls() { const int nrOfParallelOperations = 100; var items = Enumerable.Range(0, nrOfParallelOperations).ToArray(); var collection = new CopyOnWriteCollection <int>(); collection.AddRange(items); var tryRemoveActions = new Action[nrOfParallelOperations]; for (var i = 0; i < nrOfParallelOperations; i++) { var item = i; tryRemoveActions[i] = () => collection.TryRemove(item); } Parallel.Invoke(tryRemoveActions); Assert.Equal(0, collection.Count); }