У меня есть модульный тест, который тестирует BufferWithTime. Кажется, я получаю противоречивые результаты, когда значения передаются в тот момент, когда буферизация выдаст новое значение.
var scheduler = new TestScheduler();
var source = scheduler.CreateColdObservable(
new Recorded<Notification<int>>(50, new Notification<int>.OnNext(1)),
new Recorded<Notification<int>>(100, new Notification<int>.OnNext(2)),
new Recorded<Notification<int>>(150, new Notification<int>.OnNext(3)),
new Recorded<Notification<int>>(200, new Notification<int>.OnNext(4)),
new Recorded<Notification<int>>(250, new Notification<int>.OnNext(5)),
new Recorded<Notification<int>>(300, new Notification<int>.OnNext(6)),
new Recorded<Notification<int>>(350, new Notification<int>.OnNext(7)),
new Recorded<Notification<int>>(400, new Notification<int>.OnNext(8)),
new Recorded<Notification<int>>(450, new Notification<int>.OnNext(9)),
new Recorded<Notification<int>>(450, new Notification<int>.OnCompleted()));
var results = scheduler.Run(() => source
.BufferWithTime(TimeSpan.FromTicks(150), scheduler));
Результаты, которые я получил от этого, по сути:
results[0] = [1,2]
results[1] = [3,4,5,6]
results[2] = [7,8,9]
Мой вопрос: почему в первом буфере только два элемента, а во втором - четыре? Я ожидал бы, что источник, который испускается в то же время, что и буферизация, должен произойти, он либо всегда помещается в буфер, либо всегда ставится в очередь для следующего буфера. Я только что наткнулся на ошибку?