This repository was archived by the owner on Jun 21, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +26
-6
lines changed
GitHub.Exports.Reactive/Collections Expand file tree Collapse file tree 2 files changed +26
-6
lines changed Original file line number Diff line number Diff line change @@ -131,9 +131,9 @@ enum TheAction
131131 IConnectableObservable < Unit > cachePump ;
132132 ConcurrentQueue < ActionData > cache ;
133133
134- Subject < Unit > signalHaveData ;
135- Subject < Unit > signalNeedData ;
136- Subject < ActionData > dataListener ;
134+ ReplaySubject < Unit > signalHaveData ;
135+ ReplaySubject < Unit > signalNeedData ;
136+ ReplaySubject < ActionData > dataListener ;
137137
138138 bool resetting = false ;
139139
@@ -1110,11 +1110,11 @@ void Reset()
11101110 originalSourceIsCompleted = false ;
11111111 signalOriginalSourceCompletion = false ;
11121112 cache = new ConcurrentQueue < ActionData > ( ) ;
1113- dataListener = new Subject < ActionData > ( ) ;
1113+ dataListener = new ReplaySubject < ActionData > ( ) ;
11141114 disposables . Add ( dataListener ) ;
1115- signalHaveData = new Subject < Unit > ( ) ;
1115+ signalHaveData = new ReplaySubject < Unit > ( ) ;
11161116 disposables . Add ( signalHaveData ) ;
1117- signalNeedData = new Subject < Unit > ( ) ;
1117+ signalNeedData = new ReplaySubject < Unit > ( ) ;
11181118 disposables . Add ( signalNeedData ) ;
11191119 originalSourceCompleted = new ReplaySubject < Unit > ( ) ;
11201120
Original file line number Diff line number Diff line change @@ -1957,4 +1957,24 @@ public void RemovingWithNoObservableSetThrows()
19571957 ITrackingCollection < Thing > col = new TrackingCollection < Thing > ( ) ;
19581958 Assert . Throws < InvalidOperationException > ( ( ) => col . RemoveItem ( new Thing ( ) ) ) ;
19591959 }
1960+
1961+ [ Test ]
1962+ public async void AddingBeforeSubscribingWorks ( )
1963+ {
1964+ ITrackingCollection < Thing > col = new TrackingCollection < Thing > ( Observable . Empty < Thing > ( ) ) ;
1965+ ReplaySubject < Thing > done = new ReplaySubject < Thing > ( ) ;
1966+ col . AddItem ( GetThing ( 1 ) ) ;
1967+ col . AddItem ( GetThing ( 2 ) ) ;
1968+ var count = 0 ;
1969+ done . OnNext ( null ) ;
1970+ col . Subscribe ( t =>
1971+ {
1972+ done . OnNext ( t ) ;
1973+ if ( ++ count == 2 )
1974+ done . OnCompleted ( ) ;
1975+ } , ( ) => { } ) ;
1976+
1977+ await Observable . Timeout ( done , TimeSpan . FromMilliseconds ( 500 ) ) ;
1978+ Assert . AreEqual ( 2 , col . Count ) ;
1979+ }
19601980}
You can’t perform that action at this time.
0 commit comments