public void TestIncorrectRemove() { var evaluator = new SchedulingServiceImpl(-1, new TimeSourceServiceImpl()); var callback = new SupportScheduleCallback(); evaluator.Remove(callback, 0); }
public void TestTrigger() { long startTime = 0; service.Time = 0; // Add callbacks service.Add(20, callbacks[3], slots[1][1]); service.Add(20, callbacks[2], slots[1][0]); service.Add(20, callbacks[1], slots[0][1]); service.Add(21, callbacks[0], slots[0][0]); Assert.IsTrue(service.IsScheduled(callbacks[3])); Assert.IsTrue(service.IsScheduled(callbacks[0])); // Evaluate before the within time, expect not results startTime += 19; service.Time = startTime; EvaluateSchedule(); CheckCallbacks(callbacks, new[] { 0, 0, 0, 0, 0 }); Assert.IsTrue(service.IsScheduled(callbacks[3])); // Evaluate exactly on the within time, expect a result startTime += 1; service.Time = startTime; EvaluateSchedule(); CheckCallbacks(callbacks, new[] { 0, 1, 2, 3, 0 }); Assert.IsFalse(service.IsScheduled(callbacks[3])); // Evaluate after already evaluated once, no result startTime += 1; service.Time = startTime; EvaluateSchedule(); CheckCallbacks(callbacks, new[] { 4, 0, 0, 0, 0 }); Assert.IsFalse(service.IsScheduled(callbacks[3])); startTime += 1; service.Time = startTime; EvaluateSchedule(); Assert.AreEqual(0, callbacks[3].ClearAndGetOrderTriggered()); // Adding the same callback more than once should cause an exception service.Add(20, callbacks[0], slots[0][0]); service.Add(28, callbacks[0], slots[0][0]); service.Remove(callbacks[0], slots[0][0]); service.Add(20, callbacks[2], slots[1][0]); service.Add(25, callbacks[1], slots[0][1]); service.Remove(callbacks[1], slots[0][1]); service.Add(21, callbacks[0], slots[0][0]); service.Add(21, callbacks[3], slots[1][1]); service.Add(20, callbacks[1], slots[0][1]); SupportScheduleCallback.SetCallbackOrderNum(0); startTime += 20; service.Time = startTime; EvaluateSchedule(); CheckCallbacks(callbacks, new[] { 0, 1, 2, 0, 0 }); startTime += 1; service.Time = startTime; EvaluateSchedule(); CheckCallbacks(callbacks, new[] { 3, 0, 0, 4, 0 }); service.Time = startTime + int.MaxValue; EvaluateSchedule(); CheckCallbacks(callbacks, new[] { 0, 0, 0, 0, 0 }); }