-
Notifications
You must be signed in to change notification settings - Fork 2
/
scan-latest-from.spec.ts
43 lines (37 loc) · 1.83 KB
/
scan-latest-from.spec.ts
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
import {marbles} from 'rxjs-marbles';
import {scanLatestFrom} from './scan-latest-from';
describe('scanLatestFrom', () => {
it('should accumulate values from first seed value', marbles(m => {
const acc = (acc: any, next: any) => acc + next;
const seed = m.cold(' 1----|');
const source = m.cold('a-b-c|').pipe(scanLatestFrom(acc, seed));
const result = ' a-b-c|';
m.expect(source).toBeObservable(result, {a: '1a', b: '1ab', c: '1abc'});
}));
it('should accumulate values from multiple seed values', marbles(m => {
const acc = (acc: any, next: any) => acc + next;
const seed = m.cold(' 1-----2-----3|');
const source = m.cold('a-b-c-d-e-f-g-h-i|').pipe(scanLatestFrom(acc, seed));
const result = ' a-b-c-d-e-f-g-h-i|';
m.expect(source).toBeObservable(result, {
a: '1a', b: '1ab', c: '1abc',
d: '2d', e: '2de', f: '2def',
g: '3g', h: '3gh', i: '3ghi'
});
}));
it('should emit nothing if seed never emits', marbles(m => {
const source1 = m.cold('a-b-c-d-e-f|').pipe(scanLatestFrom((a, b) => a + b, m.cold('')));
m.expect(source1).toBeObservable('-----------|');
const source2 = m.cold('a-b-c-d-e-f|').pipe(scanLatestFrom((a, b) => a + b, m.cold('|')));
m.expect(source2).toBeObservable('-----------|');
const source3 = m.cold('a-b-c-d-e-f').pipe(scanLatestFrom((a, b) => a + b, m.cold('')));
m.expect(source3).toBeObservable('');
}));
it('should emit error from the seed observable', marbles(m => {
const acc = (acc: any, next: any) => acc + next;
const seed = m.cold('#');
const source = m.cold('a-b-c|').pipe(scanLatestFrom(acc, seed));
const result = ' #';
m.expect(source).toBeObservable(result);
}));
});