Skip to content

Commit e4b37bf

Browse files
committed
feat(testscheduler): define public interfaces
1 parent 0084669 commit e4b37bf

File tree

1 file changed

+31
-6
lines changed

1 file changed

+31
-6
lines changed

src/scheduler/TestScheduler.ts

+31-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,34 @@
11
import { Observable } from 'rxjs/Observable';
2+
import { VirtualAction } from 'rxjs/scheduler/VirtualTimeScheduler';
23
import { VirtualTimeScheduler } from 'rxjs/scheduler/VirtualTimeScheduler';
34
import { ColdObservable } from 'rxjs/testing/ColdObservable';
45
import { HotObservable } from 'rxjs/testing/HotObservable';
6+
import { parseObservableMarble } from '../marbles/parseObservableMarble';
57
import { SubscriptionMarbleToken } from '../marbles/SubscriptionMarbleToken';
68
import { TestMessage } from '../message/TestMessage';
79

8-
const parseMarbles = (..._args: Array<any>) => {
9-
return [];
10-
};
11-
1210
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+
1332
public createColdObservable<T = string>(marble: string, value?: { [key: string]: T }, error?: any): Observable<T>;
1433
public createColdObservable<T = string>(message: Array<TestMessage<T>>): Observable<T>;
1534
public createColdObservable<T = string>(...args: Array<any>): Observable<T> {
@@ -19,8 +38,11 @@ class TestScheduler extends VirtualTimeScheduler {
1938
throw new Error(`Cold observable cannot have subscription offset ${SubscriptionMarbleToken.SUBSCRIBE}`);
2039
}
2140

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);
2344
const observable = new ColdObservable<T>(messages, this);
45+
this.coldObservables.push(observable);
2446
return observable;
2547
}
2648

@@ -29,8 +51,11 @@ class TestScheduler extends VirtualTimeScheduler {
2951
public createHotObservable<T = string>(...args: Array<any>): Observable<T> {
3052
const [marbleValue, value, error] = args;
3153

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);
3357
const subject = new HotObservable<T>(messages, this);
58+
this.hotObservables.push(subject);
3459
return subject;
3560
}
3661
}

0 commit comments

Comments
 (0)