forked from ReactiveX/rxjs
/
concatMapTo-spec.ts
69 lines (53 loc) · 2.67 KB
/
concatMapTo-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
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
import { of } from 'rxjs';
import { concatMapTo } from 'rxjs/operators';
it('should infer correctly', () => {
const o = of(1, 2, 3).pipe(concatMapTo(of('foo'))); // $ExpectType Observable<string>
});
it('should infer correctly with multiple types', () => {
const o = of(1, 2, 3).pipe(concatMapTo(of('foo', 4))); // $ExpectType Observable<string | number>
});
it('should infer correctly with an array', () => {
const o = of(1, 2, 3).pipe(concatMapTo([4, 5, 6])); // $ExpectType Observable<number>
});
it('should infer correctly with a Promise', () => {
const o = of(1, 2, 3).pipe(concatMapTo(new Promise<string>(() => {}))); // $ExpectType Observable<string>
});
it('should infer correctly by using the resultSelector first parameter', () => {
const o = of(1, 2, 3).pipe(concatMapTo(of('foo'), a => a)); // $ExpectType Observable<number>
});
it('should infer correctly by using the resultSelector second parameter', () => {
const o = of(1, 2, 3).pipe(concatMapTo(of('foo'), (a, b) => b)); // $ExpectType Observable<string>
});
it('should support a resultSelector that takes an inner index', () => {
const o = of(1, 2, 3).pipe(concatMapTo(of('foo'), (a, b, innnerIndex) => a)); // $ExpectType Observable<number>
});
it('should support a resultSelector that takes an inner and outer index', () => {
const o = of(1, 2, 3).pipe(concatMapTo(of('foo'), (a, b, innnerIndex, outerIndex) => a)); // $ExpectType Observable<number>
});
it('should support an undefined resultSelector', () => {
const o = of(1, 2, 3).pipe(concatMapTo(of('foo'), undefined)); // $ExpectType Observable<string>
});
it('should support union types', () => {
const s = Math.random() > 0.5 ? of(123) : of('abc');
const r = of(1, 2, 3).pipe(concatMapTo(s)); // $ExpectType Observable<string | number>
});
it('should support union-type projections with empty streams', () => {
const o = of(1, 2, 3).pipe(concatMapTo(Math.random() < 0.5 ? of(123) : of())); // $ExpectType Observable<number>
});
it('should enforce types', () => {
const o = of(1, 2, 3).pipe(concatMapTo()); // $ExpectError
});
it('should enforce types of the observable parameter', () => {
const fn = () => {}
const o = of(1, 2, 3).pipe(concatMapTo(fn)); // $ExpectError
});
it('should enforce the return type', () => {
const o = of(1, 2, 3).pipe(concatMapTo(p => p)); // $ExpectError
const p = of(1, 2, 3).pipe(concatMapTo(4)); // $ExpectError
});
it('should produce `Observable<never>` when mapping to an `ObservableInput<never>`', () => {
const o = of(1, 2, 3).pipe(concatMapTo(Promise.reject())); // $ExpectType Observable<never>
});
it('should be deprecated', () => {
const o = of(1, 2, 3).pipe(concatMapTo(of(true))); // $ExpectDeprecation
});