TestScheduler будет работать до последнего запланированного действия, а не до времени выполнения.
Итак, используя пример:
var a = 1;
var scheduler = new TestScheduler();
scheduler.Schedule(() => a++, TimeSpan.FromTicks(50));
scheduler.RunTo(100);
scheduler.Ticks будет равно 50.
var a = 1;
var scheduler = new TestScheduler();
scheduler.Schedule(() => a++, TimeSpan.FromTicks(50));
scheduler.Schedule(() => a++, TimeSpan.FromTicks(70));
scheduler.RunTo(100);
scheduler.Ticks будет равно 70.
Я полагаю, что это не должно тратить циклы на обработку часов вплоть до RunTo, так как для него ничего не запланировано.