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);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
        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();
            }
        }