Skip to content

[Bug]: Switch operator lacks support of virtualized changeset#1164

Description

@dmitmaloukas

Describe the bug 馃悶

There is no Switch operator version for virtualized changesets IChangeSet<TObject, TKey, VirtualContext<TObject>>.

In this case default reactive Switch operator is used, so the test fails.

 [Fact]
 public void SwitchSet_Switch_Virtualized()
 {
     BehaviorSubject<bool> enableSubj = new(true);
     SourceCache<int, int> cache = new(x => x);
     cache.Edit(updater => updater.AddOrUpdate(Enumerable.Range(0, 100)));
     SortExpressionComparer<int> comparer = SortExpressionComparer<int>.Ascending(x => x);

     int count = 10;

     IObservable<VirtualRequest> virtualReqStream
         = Observable.Return(new VirtualRequest(0, count)).Concat(Observable.Never<VirtualRequest>());

     IObservable<IChangeSet<int, int, VirtualContext<int>>> virtualizedChangeSet = cache.Connect()
         .SortAndVirtualize(comparer, virtualReqStream);

     IObservable<IChangeSet<int, int, VirtualContext<int>>> testStream = enableSubj
         .Select(enable =>
         {
             if (!enable)
                 return Observable.Empty<IChangeSet<int, int, VirtualContext<int>>>();

             return virtualizedChangeSet;
         })
         .Switch();

     TestScheduler scheduler = new();

     ITestableObserver<IChangeSet<int, int, VirtualContext<int>>> observer
         = scheduler.CreateObserver<IChangeSet<int, int, VirtualContext<int>>>();

     testStream.Subscribe(observer);

     enableSubj.OnNext(false);

     Assert.Collection(
         observer.Messages,
         msg =>
         {
             Assert.Equal(NotificationKind.OnNext, msg.Value.Kind);
             Assert.Equal(count, msg.Value.Value.Adds);
             Assert.Equal(0, msg.Value.Value.Removes);
         },
         msg =>
         {
             Assert.Equal(NotificationKind.OnNext, msg.Value.Kind);
             Assert.Equal(0, msg.Value.Value.Adds);
             Assert.Equal(count, msg.Value.Value.Removes);
         }
     );
 }

DynamicData Version

9.4.33

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions