This repository was archived by the owner on Feb 16, 2024. It is now read-only.

Description
ZipObservable has wrong OnCompleted timing.
var source1 = new Subject<int>();
var source2 = new Subject<char>();
var observable = Observable.Zip(source1, source2, (x, y) => $"{x}{y}");
observable.Subscribe(
onNext: Console.WriteLine,
onCompleted: () => Console.WriteLine("OnCompleted"));
source1.OnNext(1);
source2.OnNext('A');
source1.OnNext(2);
source2.OnNext('B');
source2.OnNext('C');
source2.OnNext('D');
source1.OnNext(3);
source2.OnCompleted();
source1.OnNext(4); // observable should be completed here
source1.OnNext(5); // observable is completed here in UniRx
source1.OnCompleted();
reference:

https://rxmarbles.com/#zip
var source1 = new Subject<int>();
var source2 = new Subject<char>();
var observable = Observable.Zip(source1, source2, (x, y) => $"{x}{y}");
observable.Subscribe(
onNext: Console.WriteLine,
onCompleted: () => Console.WriteLine("OnCompleted"));
source1.OnNext(1);
source2.OnNext('A');
source1.OnNext(2);
source2.OnNext('B');
source1.OnNext(3);
source2.OnNext('C');
source1.OnCompleted(); // observable should be completed here
source2.OnCompleted(); // observable is completed here in UniRx
reference:

https://reactivex.io/documentation/operators/zip.html