@@ -4,6 +4,8 @@ import Notification from '../Notification';
4
4
import Subject from '../Subject' ;
5
5
6
6
export default class TestScheduler extends VirtualTimeScheduler {
7
+ private hotObservables : { setup : ( scheduler : TestScheduler ) => void , subject : Subject < any > } [ ] = [ ] ;
8
+
7
9
constructor ( public assertDeepEqual : ( actual : any , expected : any ) => boolean | void ) {
8
10
super ( ) ;
9
11
}
@@ -22,14 +24,19 @@ export default class TestScheduler extends VirtualTimeScheduler {
22
24
} ) ;
23
25
}
24
26
25
- createHotObservable ( marbles : string , values ?: any , error ?: any ) {
27
+ createHotObservable < T > ( marbles : string , values ?: any , error ?: any ) : Subject < T > {
26
28
let messages = TestScheduler . parseMarbles ( marbles , values , error ) ;
27
29
let subject = new Subject ( ) ;
28
- messages . forEach ( ( { notification, frame } ) => {
29
- this . schedule ( ( ) => {
30
- notification . observe ( subject ) ;
31
- } , frame ) ;
32
- } , this ) ;
30
+ this . hotObservables . push ( {
31
+ setup ( scheduler ) {
32
+ messages . forEach ( ( { notification, frame } ) => {
33
+ scheduler . schedule ( ( ) => {
34
+ notification . observe ( subject ) ;
35
+ } , frame ) ;
36
+ } ) ;
37
+ } ,
38
+ subject
39
+ } ) ;
33
40
return subject ;
34
41
}
35
42
@@ -62,7 +69,12 @@ export default class TestScheduler extends VirtualTimeScheduler {
62
69
} ;
63
70
}
64
71
65
- flush ( ) {
72
+ flush ( ) {
73
+ const hotObservables = this . hotObservables ;
74
+ while ( hotObservables . length > 0 ) {
75
+ hotObservables . shift ( ) . setup ( this ) ;
76
+ }
77
+
66
78
super . flush ( ) ;
67
79
const flushTests = this . flushTests . filter ( test => test . ready ) ;
68
80
while ( flushTests . length > 0 ) {
0 commit comments