public void TestBasicKeepCount() { var bag = new ConcurrentStackedBagSlim <int>(true); bag.Add(10); bag.Add(12); Assert.AreEqual(2, bag.Count); }
public void TestCount() { var bag = new ConcurrentStackedBagSlim <int>(); bag.Add(10); bag.Add(11); bag.Add(13); Assert.AreEqual(3, bag.Count); }
public void TestContains() { var bag = new ConcurrentStackedBagSlim <int>(); bag.Add(10); bag.Add(11); bag.Add(13); Assert.IsTrue(bag.Contains(11)); }
public void TestBasicIterate() { var bag = new ConcurrentStackedBagSlim <int>(); bag.Add(10); bag.Add(11); bag.Add(13); var sum = bag.Sum(); Assert.AreEqual(34, sum); }
public void TestToArray() { var bag = new ConcurrentStackedBagSlim <int>(); bag.Add(10); bag.Add(11); bag.Add(12); var arr = bag.ToArray(); Assert.AreEqual(12, arr[0]); Assert.AreEqual(11, arr[1]); Assert.AreEqual(10, arr[2]); }
public void TestAddThreeCheckEmptyAndTryTakeShouldErrorOut() { var bag = new ConcurrentStackedBagSlim <int>(); bag.Add(10); bag.Add(9); bag.Add(8); Assert.AreEqual(8, bag.Take()); Assert.AreEqual(9, bag.Take()); Assert.AreEqual(10, bag.Take()); Assert.IsTrue(bag.IsEmpty); Assert.ThrowsException <InvalidOperationException>(() => bag.Take()); }
public void TestCopyTo() { var bag = new ConcurrentStackedBagSlim <int>(); bag.Add(10); bag.Add(11); bag.Add(13); var arr = new int[3]; bag.CopyTo(arr, 0); Assert.AreEqual(13, arr[0]); Assert.AreEqual(11, arr[1]); Assert.AreEqual(10, arr[2]); }
public void TestThreadedConcurrentStackedBagSlim() { const int loopCount = 50000; var done = false; var sum = 0; var bag = new ConcurrentStackedBagSlim <int>(); var threadInserter = new Thread(_ => { for (var i = 1; i <= loopCount; i++) { bag.Add(i); } done = true; }); threadInserter.Start(); _parallel.For(0, loopCount, i => { while (true) { if (done && bag.IsEmpty) { break; } if (bag.TryTake(out var n)) { Interlocked.Add(ref sum, n); } }
public void TestBasic() { var bag = new ConcurrentStackedBagSlim <int>(); bag.Add(10); Assert.IsTrue(bag.TryPeek(out var n)); Assert.AreEqual(10, n); Assert.AreEqual(10, bag.Take()); }