Exemple #1
0
        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);
                    }
                }
Exemple #2
0
        public void TestBasicKeepCount()
        {
            var bag = new ConcurrentStackedBagSlim <int>(true);

            bag.Add(10);
            bag.Add(12);
            Assert.AreEqual(2, bag.Count);
        }
Exemple #3
0
        public void TestPushRangeOfOneElement()
        {
            var bag = new ConcurrentStackedBagSlim <int>();
            var arr = new[] { 10 };

            bag.PushRange(arr);
            Assert.AreEqual(10, bag.Take());
            Assert.IsTrue(bag.IsEmpty);
        }
Exemple #4
0
        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());
        }
Exemple #5
0
        public void TestCount()
        {
            var bag = new ConcurrentStackedBagSlim <int>();

            bag.Add(10);
            bag.Add(11);
            bag.Add(13);
            Assert.AreEqual(3, bag.Count);
        }
Exemple #6
0
        public void TestContains()
        {
            var bag = new ConcurrentStackedBagSlim <int>();

            bag.Add(10);
            bag.Add(11);
            bag.Add(13);
            Assert.IsTrue(bag.Contains(11));
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        public void TestPushRangeOfFourElements()
        {
            var bag = new ConcurrentStackedBagSlim <int>();
            var arr = new[] { 10, 12, 14, 16 };

            bag.PushRange(arr);
            Assert.AreEqual(16, bag.Take());
            Assert.AreEqual(14, bag.Take());
            Assert.AreEqual(12, bag.Take());
            Assert.AreEqual(10, bag.Take());
            Assert.IsTrue(bag.IsEmpty);
        }
Exemple #9
0
        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]);
        }
Exemple #10
0
        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());
        }
Exemple #11
0
        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]);
        }