public void Init_FromEmptyCopy_WithOutExcpetion()
        {
            // Arrange
            var concurrentQueue = new CustomConcurrentQueue <int>(null);

            // Act
            concurrentQueue.Push(5);
            concurrentQueue.Push(6);
            var result = concurrentQueue.Pop();

            // Assert
            Assert.AreEqual(5, result);
        }
        public void Queue_SingleThreadPopPush_ReturnValue()
        {
            // Arrange
            var concurrentQueue = new CustomConcurrentQueue <int>();

            // Act
            concurrentQueue.Push(5);
            concurrentQueue.Push(6);
            var result = concurrentQueue.Pop();

            // Assert
            Assert.AreEqual(5, result);
        }
        public void PeekElementFromCustomConcurrentQueue()
        {
            CustomConcurrentQueue <int> queue = new CustomConcurrentQueue <int>();

            queue.Enqueue(5);
            queue.Enqueue(3);
            queue.Enqueue(7);
            queue.Enqueue(1);

            int expectedCount = 4;
            int expectedItem  = 5;

            Assert.AreEqual(expectedItem, queue.Peek());
            Assert.AreEqual(expectedCount, queue.Count);
        }
        public void AddAndGetElementsInCustomConcurrentQueue()
        {
            CustomConcurrentQueue <int> queue = new CustomConcurrentQueue <int>();

            queue.Enqueue(5);
            queue.Enqueue(3);

            int exp1          = 5;
            int exp2          = 3;
            int expectedCpunt = 0;

            Assert.AreEqual(exp1, queue.Dequeue());
            Assert.AreEqual(exp2, queue.Dequeue());
            Assert.AreEqual(expectedCpunt, queue.Count);

            //exception
            queue.Dequeue();
        }
        public async Task Queue_MultiThreadPop_ReturnValues()
        {
            // Arrange
            var concurrentQueue = new CustomConcurrentQueue <int>();

            // Act
            concurrentQueue.Push(5);
            concurrentQueue.Push(6);

            var firstTask  = Task.Run(() => concurrentQueue.Pop());
            var secondTask = Task.Run(() => concurrentQueue.Pop());

            var result = await Task.WhenAll(firstTask, secondTask);;

            // Assert
            Assert.AreEqual(result.Length, 2);
            Assert.That(result[0], Is.EqualTo(5).Or.EqualTo(6));
            Assert.That(result[1], Is.EqualTo(5).Or.EqualTo(6));
        }
        public void Queue_MultiThreadPopPush_ReturnValues()
        {
            // Arrange
            var concurrentQueue = new CustomConcurrentQueue <int>();

            // Act
            var firstTask  = Task.Run(() => concurrentQueue.Pop());
            var secondTask = Task.Run(() => concurrentQueue.Pop());
            var thirdTask  = Task.Run(() =>
            {
                concurrentQueue.Push(5);
                concurrentQueue.Push(6);
                concurrentQueue.Push(7);
            });

            Task.WaitAll(firstTask, secondTask, thirdTask);

            // Assert
            Assert.That(firstTask.Result, Is.EqualTo(5).Or.EqualTo(6));
            Assert.That(secondTask.Result, Is.EqualTo(5).Or.EqualTo(6));
        }
Exemple #7
0
        public Stand(Product product)
        {
            //product init
            _product = product ?? throw new ArgumentNullException("Product can't be null");

            //sellers init
            Random rnd          = new Random(DateTime.Now.Millisecond);
            int    sellersCount = rnd.Next(ProgramConfig.StandConfig.MinNumberOfSellers, ProgramConfig.StandConfig.MaxNumberOfSellers);

            for (int i = 0; i < sellersCount; i++)
            {
                var seller = new Seller(this);
                seller.OnWorkCompleted += Seller_OnWorkCompleted;
                _sellersCount++;
            }
            ConsoleHelper.WriteInfo(String.Format("Sellers created: {0}", sellersCount));

            //buyers queue init
            _buyerQueue = new CustomConcurrentQueue <Buyer>();

            _sellersCountLocker = new object();
            _productCountLocker = new object();
        }
Exemple #8
0
 public SellerHelper(Seller seller)
 {
     _seller     = seller ?? throw new ArgumentNullException("Seller can't be null");
     _buyerQueue = new CustomConcurrentQueue <Buyer>();
     DoWork();
 }