1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var testing_1 = require("rxjs/testing");
var scheduler_1 = require("./src/scheduler");
var test_observables_1 = require("./src/test-observables");
var scheduler_2 = require("./src/scheduler");
exports.getTestScheduler = scheduler_2.getTestScheduler;
exports.initTestScheduler = scheduler_2.initTestScheduler;
exports.resetTestScheduler = scheduler_2.resetTestScheduler;
function hot(marbles, values, error) {
return new test_observables_1.TestHotObservable(marbles.trim(), values, error);
}
exports.hot = hot;
function cold(marbles, values, error) {
return new test_observables_1.TestColdObservable(marbles.trim(), values, error);
}
exports.cold = cold;
function time(marbles) {
return scheduler_1.getTestScheduler().createTime(marbles.trim());
}
exports.time = time;
/*
* Based on source code found in rxjs library
* https://github.com/ReactiveX/rxjs/blob/master/src/testing/TestScheduler.ts
*
*/
function materializeInnerObservable(observable, outerFrame) {
var messages = [];
var scheduler = scheduler_1.getTestScheduler();
observable.subscribe(function (value) {
messages.push({
frame: scheduler.frame - outerFrame,
notification: rxjs_1.Notification.createNext(value),
});
}, function (err) {
messages.push({
frame: scheduler.frame - outerFrame,
notification: rxjs_1.Notification.createError(err),
});
}, function () {
messages.push({
frame: scheduler.frame - outerFrame,
notification: rxjs_1.Notification.createComplete(),
});
});
return messages;
}
function addMatchers() {
jasmine.addMatchers({
toHaveSubscriptions: function () { return ({
compare: function (actual, marbles) {
var marblesArray = typeof marbles === 'string' ? [marbles] : marbles;
var results = marblesArray.map(function (marbles) {
return testing_1.TestScheduler.parseMarblesAsSubscriptions(marbles);
});
expect(results).toEqual(actual.getSubscriptions());
return { pass: true };
},
}); },
toBeObservable: function () { return ({
compare: function (actual, fixture) {
var results = [];
var subscription;
var scheduler = scheduler_1.getTestScheduler();
scheduler.schedule(function () {
subscription = actual.subscribe(function (x) {
var value = x;
// Support Observable-of-Observables
if (x instanceof rxjs_1.Observable) {
value = materializeInnerObservable(value, scheduler.frame);
}
results.push({
frame: scheduler.frame,
notification: rxjs_1.Notification.createNext(value),
});
}, function (err) {
results.push({
frame: scheduler.frame,
notification: rxjs_1.Notification.createError(err),
});
}, function () {
results.push({
frame: scheduler.frame,
notification: rxjs_1.Notification.createComplete(),
});
});
});
scheduler.flush();
var expected = testing_1.TestScheduler.parseMarbles(fixture.marbles, fixture.values, fixture.error, true, true);
expect(results).toEqual(expected);
return { pass: true };
},
}); },
});
}
exports.addMatchers = addMatchers;
function setupEnvironment() {
jasmine.getEnv().beforeAll(function () { return addMatchers(); });
jasmine.getEnv().beforeEach(function () { return scheduler_1.initTestScheduler(); });
jasmine.getEnv().afterEach(function () {
scheduler_1.getTestScheduler().flush();
scheduler_1.resetTestScheduler();
});
}
exports.setupEnvironment = setupEnvironment;
setupEnvironment();
//# sourceMappingURL=index.js.map