Exemplo n.º 1
0
        public void TestDequeueReturn()
        {
            Sixt4.TestAssignment.ConcurrentQueue <int> list = new Sixt4.TestAssignment.ConcurrentQueue <int>();

            Task <int> taskDequeue = Task <int> .Run(() => list.Dequeue(5));

            Task taskEnqueue = Task <int> .Run(() => list.Enqueue(2));

            taskDequeue.Wait();
            taskEnqueue.Wait();
            Assert.IsTrue(taskDequeue.Result == 2);
        }
Exemplo n.º 2
0
        public void TestDequeue()
        {
            Sixt4.TestAssignment.ConcurrentQueue <int> list = new Sixt4.TestAssignment.ConcurrentQueue <int>();

            Task <int> taskDequeue = Task <int> .Run(() => list.Dequeue(1000));

            Task taskEnqueue = Task.Delay(500).ContinueWith(_ => list.Enqueue(2));

            taskDequeue.Wait();
            taskEnqueue.Wait();
            Assert.IsTrue(taskDequeue.Result == 2);
        }
Exemplo n.º 3
0
        private async void TestEnqueueAsync()
        {
            Sixt4.TestAssignment.ConcurrentQueue <int> list = new Sixt4.TestAssignment.ConcurrentQueue <int>();
            var tasks = new List <Task>();
            var range = Enumerable.Range(0, 10000);

            foreach (var number in range)
            {
                tasks.Add(Task.Factory.StartNew(() => list.Enqueue(number), TaskCreationOptions.PreferFairness));
            }

            await Task.WhenAll(tasks);

            Assert.IsTrue(range.Count <int>() == list.Count());
            Assert.IsTrue(range.SequenceEqual <int>(list));
        }
Exemplo n.º 4
0
        public void TestDequeueTimeoutException()
        {
            Sixt4.TestAssignment.ConcurrentQueue <int> list = new Sixt4.TestAssignment.ConcurrentQueue <int>();
            bool returnValue = false;

            try
            {
                Task <int> taskDequeue = Task <int> .Run(() => list.Dequeue(2000));

                taskDequeue.Wait();
            }
            catch (Exception)
            {
                returnValue = true;
            }
            Assert.IsTrue(returnValue);
        }
Exemplo n.º 5
0
        private async void TestDequeueWithCollectionAsync()
        {
            Sixt4.TestAssignment.ConcurrentQueue <int> list = new Sixt4.TestAssignment.ConcurrentQueue <int>();
            var        tasks   = new List <Task>();
            var        range   = Enumerable.Range(0, 10000);
            List <int> numbers = new List <int>();

            foreach (var number in range)
            {
                numbers.Add(number);
            }
            tasks.Add(Task.Factory.StartNew(() => list.Enqueue(numbers), TaskCreationOptions.PreferFairness));
            tasks.Add(Task <List <int> > .Factory.StartNew(() => list.DequeueAll(1000), TaskCreationOptions.PreferFairness));
            await Task.WhenAll(tasks);

            Assert.IsTrue(range.Count <int>() == (tasks[1] as Task <List <int> >).Result.Count());
            Assert.IsTrue(range.SequenceEqual <int>((tasks[1] as Task <List <int> >).Result));
        }