@@ -4,6 +4,7 @@ declare const {hot, cold, asDiagram, expectObservable, expectSubscriptions, time
44
55const Observable = Rx . Observable ;
66const Subject = Rx . Subject ;
7+ const ReplaySubject = Rx . ReplaySubject ;
78
89/** @test {multicast} */
910describe ( 'Observable.prototype.multicast' , ( ) => {
@@ -89,6 +90,26 @@ describe('Observable.prototype.multicast', () => {
8990 expectSubscriptions ( source . subscriptions ) . toBe ( sourceSubs ) ;
9091 } ) ;
9192
93+ it ( 'should accept a multicast selector and respect the subject\'s messaging semantics' , ( ) => {
94+ const source = cold ( '-1-2-3----4-|' ) ;
95+ const sourceSubs = [ '^ !' ,
96+ ' ^ !' ,
97+ ' ^ !' ] ;
98+ const multicasted = source . multicast ( ( ) => new ReplaySubject ( 1 ) ,
99+ x => x . concat ( x . takeLast ( 1 ) ) ) ;
100+ const expected1 = '-1-2-3----4-(4|)' ;
101+ const expected2 = ' -1-2-3----4-(4|)' ;
102+ const expected3 = ' -1-2-3----4-(4|)' ;
103+ const subscriber1 = hot ( 'a| ' ) . mergeMapTo ( multicasted ) ;
104+ const subscriber2 = hot ( ' b| ' ) . mergeMapTo ( multicasted ) ;
105+ const subscriber3 = hot ( ' c| ' ) . mergeMapTo ( multicasted ) ;
106+
107+ expectObservable ( subscriber1 ) . toBe ( expected1 ) ;
108+ expectObservable ( subscriber2 ) . toBe ( expected2 ) ;
109+ expectObservable ( subscriber3 ) . toBe ( expected3 ) ;
110+ expectSubscriptions ( source . subscriptions ) . toBe ( sourceSubs ) ;
111+ } ) ;
112+
92113 it ( 'should do nothing if connect is not called, despite subscriptions' , ( ) => {
93114 const source = cold ( '--1-2---3-4--5-|' ) ;
94115 const sourceSubs = [ ] ;
0 commit comments