public void IsTaskReadyToExecute()
        {
            MultiAttemptTaskQueue q = new MultiAttemptTaskQueue(1,5,TimeSpan.FromSeconds(5));

            TaskQueue.TaskItem item = new TaskQueue.TaskItem(o => true, null);
            item.SystemData = new MultiAttemptTaskQueue.TaskRequest() { LastAttempt = DateTime.Now };
            Assert.IsFalse(q.IsTaskReadyToExecute(item));

            item.SystemData = new MultiAttemptTaskQueue.TaskRequest() { LastAttempt = DateTime.Now - TimeSpan.FromSeconds(6) };
            Assert.IsTrue(q.IsTaskReadyToExecute(item));
        }
        public void NeedWaitTask()
        {
            MultiAttemptTaskQueue q = new MultiAttemptTaskQueue(1, 5, TimeSpan.FromSeconds(5));

            TaskQueue.TaskItem item = new TaskQueue.TaskItem(o => true, null);
            item.SystemData = new MultiAttemptTaskQueue.TaskRequest() { LastAttempt = DateTime.Now };
            Trace.WriteLine(q.NeedWaitTask(item).TotalMilliseconds);
            Assert.Greater(q.NeedWaitTask(item),TimeSpan.Zero);

            item.SystemData = new MultiAttemptTaskQueue.TaskRequest() { LastAttempt = DateTime.Now - TimeSpan.FromSeconds(6) };
            Trace.WriteLine(q.NeedWaitTask(item).TotalMilliseconds); 
            Assert.Less(q.NeedWaitTask(item), TimeSpan.Zero);
        }