public void SyncRoot()
{
var queueMother = new Queue();
for (int i = 0; i < NumberOfElements; i++)
{
queueMother.Enqueue(i);
}
Assert.Equal(queueMother.SyncRoot.GetType(), typeof(object));
var queueSon = Queue.Synchronized(queueMother);
_queueGrandDaughter = Queue.Synchronized(queueSon);
_queueDaughter = Queue.Synchronized(queueMother);
Assert.Equal(queueMother.SyncRoot, queueSon.SyncRoot);
Assert.Equal(queueSon.SyncRoot, queueMother.SyncRoot);
Assert.Equal(queueMother.SyncRoot, _queueGrandDaughter.SyncRoot);
Assert.Equal(queueMother.SyncRoot, _queueDaughter.SyncRoot);
Task[] workers = new Task[NumberOfWorkers];
Action action1 = SortElements;
Action action2 = ReverseElements;
for (int i = 0; i < NumberOfWorkers; i += 2)
{
workers[i] = Task.Run(action1);
workers[i + 1] = Task.Run(action2);
}
Task.WaitAll(workers);
}