public void TestCreationNullFactory() { Assert.Throws <ArgumentNullException>(() => { var _ = new Common.RingBuffer.RingBuffer <int>(1, null); }); }
public void TestCreationCapacityZero(int value) { Assert.Throws <ArgumentOutOfRangeException>(() => { var _ = new Common.RingBuffer.RingBuffer <int>(value, () => 1); }); }
public void TestDefaultCreation() { int qnt = 10; int i = 0; RingBuffer <int> ringBuffer = new Common.RingBuffer.RingBuffer <int>(qnt, () => i++); Assert.Equal(ringBuffer.Capacity, ringBuffer.Available); Assert.Equal(ringBuffer.Capacity, qnt); }
public void TestInline() { RingBuffer <int> ringBuffer = new Common.RingBuffer.RingBuffer <int>(bufferSize, () => index++, waitTime); var factory = new TaskFactory(); List <Task> tasks = new List <Task>(); for (int i = 0; i < runCount; i++) { using var accquisiton = ringBuffer.Accquire(); System.Threading.Thread.Sleep(workTime); } }
public void TestMultiTasks() { RingBuffer <int> ringBuffer = new Common.RingBuffer.RingBuffer <int>(bufferSize, () => index++, waitTime); var factory = new TaskFactory(); List <Task> tasks = new List <Task>(); for (int i = 0; i < runCount; i++) { var task = factory.StartNew(() => { using var accquisiton = ringBuffer.Accquire(); System.Threading.Thread.Sleep(workTime); //System.Diagnostics.Debug.WriteLine($"Item {x.Current} - processado!"); }); tasks.Add(task); } Task.WhenAll(tasks.ToArray()).GetAwaiter().GetResult(); }
public void TestMultiThreadTest() { RingBuffer <int> ringBuffer = new Common.RingBuffer.RingBuffer <int>(bufferSize, () => index++, waitTime); List <Thread> threads = new List <Thread>(); for (int i = 0; i < runCount; i++) { Thread thread = new Thread(() => { using var bufferedItem = ringBuffer.Accquire(); System.Threading.Thread.Sleep(workTime); System.Diagnostics.Debug.WriteLine($"Item {bufferedItem.Current} - processado!"); }); thread.Start(); threads.Add(thread); } foreach (Thread thread in threads) { thread.Join(); } }