You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The TransformWithInlineUpdate operator changes the incoming change with change reason Update to reason Refresh, which ruins binary search in SortAndBind, SortAndVertualize, etc.
Is is expected?
Step to reproduce
public class TransformWithInlineUpdateTest : ReactiveTest
{
[Fact]
public void AfterTransformRemainsUpdate()
{
TestScheduler testScheduler = new();
SourceCache<string, string> sourceCache = new(x => x);
IObservable<IChangeSet<string, string>> itemsStream = sourceCache.Connect();
IObservable<IChangeSet<string, string>> updateStream = itemsStream.TransformWithInlineUpdate(
x => x,
(item, update) => { }
);
ITestableObserver<IChangeSet<string, string>> observerCache = testScheduler.CreateObserver<IChangeSet<string, string>>();
ITestableObserver<IChangeSet<string, string>> observerUpdate = testScheduler.CreateObserver<IChangeSet<string, string>>();
using IDisposable subscriptionCache = itemsStream.Subscribe(observerCache);
using IDisposable subscriptionUpdate = updateStream.Subscribe(observerUpdate);
sourceCache.AddOrUpdate("1");
sourceCache.AddOrUpdate("1");
//First add then update, that's right
Assert.Equal(
[ChangeReason.Add, ChangeReason.Update],
observerCache.Messages.SelectMany(message => message.Value.Value.Select(changes => changes.Reason)).ToArray()
);
// The test will fail; it returns ChangeReason.Refresh instead of ChangeReason.Update for the second element
Assert.Equal(
[ChangeReason.Add, ChangeReason.Refresh],
observerUpdate.Messages.SelectMany(message => message.Value.Value.Select(changes => changes.Reason)).ToArray()
);
}
}
Describe the bug 🐞
The
TransformWithInlineUpdate
operator changes the incoming change with change reasonUpdate
to reasonRefresh
, which ruins binary search inSortAndBind
,SortAndVertualize
, etc.Is is expected?
Step to reproduce
Expected behavior
An update should be sent as an update
Additional info
Seems like the problem is here
The text was updated successfully, but these errors were encountered: