1
1
import { Observable } from 'rxjs/Observable' ;
2
+ import { VirtualAction } from 'rxjs/scheduler/VirtualTimeScheduler' ;
2
3
import { VirtualTimeScheduler } from 'rxjs/scheduler/VirtualTimeScheduler' ;
3
4
import { ColdObservable } from 'rxjs/testing/ColdObservable' ;
4
5
import { HotObservable } from 'rxjs/testing/HotObservable' ;
6
+ import { parseObservableMarble } from '../marbles/parseObservableMarble' ;
5
7
import { SubscriptionMarbleToken } from '../marbles/SubscriptionMarbleToken' ;
6
8
import { TestMessage } from '../message/TestMessage' ;
7
9
8
- const parseMarbles = ( ..._args : Array < any > ) => {
9
- return [ ] ;
10
- } ;
11
-
12
10
class TestScheduler extends VirtualTimeScheduler {
11
+ private readonly coldObservables : Array < ColdObservable < any > > = [ ] ;
12
+ private readonly hotObservables : Array < HotObservable < any > > = [ ] ;
13
+
14
+ constructor ( private readonly autoFlush = false , private readonly frameTimeFactor = 1 ) {
15
+ super ( VirtualAction , Number . POSITIVE_INFINITY ) ;
16
+ }
17
+
18
+ public getMarbles ( ) : void {
19
+ if ( this . autoFlush ) {
20
+ throw new Error ( 'not implemented' ) ;
21
+ }
22
+ }
23
+
24
+ public advanceBy ( _frameTime : number ) : void {
25
+ throw new Error ( 'not implemented' ) ;
26
+ }
27
+
28
+ public advanceTo ( _frameTime : number ) : void {
29
+ throw new Error ( 'not implemented' ) ;
30
+ }
31
+
13
32
public createColdObservable < T = string > ( marble : string , value ?: { [ key : string ] : T } , error ?: any ) : Observable < T > ;
14
33
public createColdObservable < T = string > ( message : Array < TestMessage < T > > ) : Observable < T > ;
15
34
public createColdObservable < T = string > ( ...args : Array < any > ) : Observable < T > {
@@ -19,8 +38,11 @@ class TestScheduler extends VirtualTimeScheduler {
19
38
throw new Error ( `Cold observable cannot have subscription offset ${ SubscriptionMarbleToken . SUBSCRIBE } ` ) ;
20
39
}
21
40
22
- const messages = Array . isArray ( marbleValue ) ? marbleValue : parseMarbles ( marbleValue , value , error ) ;
41
+ const messages = Array . isArray ( marbleValue )
42
+ ? marbleValue
43
+ : parseObservableMarble ( marbleValue , value , error , false , this . frameTimeFactor ) ;
23
44
const observable = new ColdObservable < T > ( messages , this ) ;
45
+ this . coldObservables . push ( observable ) ;
24
46
return observable ;
25
47
}
26
48
@@ -29,8 +51,11 @@ class TestScheduler extends VirtualTimeScheduler {
29
51
public createHotObservable < T = string > ( ...args : Array < any > ) : Observable < T > {
30
52
const [ marbleValue , value , error ] = args ;
31
53
32
- const messages = Array . isArray ( marbleValue ) ? marbleValue : parseMarbles ( marbleValue , value , error ) ;
54
+ const messages = Array . isArray ( marbleValue )
55
+ ? marbleValue
56
+ : parseObservableMarble ( marbleValue , value , error , false , this . frameTimeFactor ) ;
33
57
const subject = new HotObservable < T > ( messages , this ) ;
58
+ this . hotObservables . push ( subject ) ;
34
59
return subject ;
35
60
}
36
61
}
0 commit comments