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)); }
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(); }
public SellerHelper(Seller seller) { _seller = seller ?? throw new ArgumentNullException("Seller can't be null"); _buyerQueue = new CustomConcurrentQueue <Buyer>(); DoWork(); }