1
+ /* globals describe, it, expect, expectObservable, hot, rxTestScheduler */
2
+ var Rx = require ( '../../dist/cjs/Rx' ) ;
3
+
4
+ var asap = Rx . Scheduler . asap ;
5
+ var Observable = Rx . Observable ;
6
+
7
+ describe ( 'Observable.prototype.cache' , function ( ) {
8
+ it ( 'should replay values upon subscription' , function ( ) {
9
+ var s1 = hot ( '---^---a---b---c---| ' ) . cache ( ) ;
10
+ var expected1 = '----a---b---c---| ' ;
11
+ var expected2 = ' (abc|)' ;
12
+ var t = time ( '----------------|' ) ;
13
+
14
+ expectObservable ( s1 ) . toBe ( expected1 ) ;
15
+
16
+ rxTestScheduler . schedule ( function ( ) {
17
+ expectObservable ( s1 ) . toBe ( expected2 ) ;
18
+ } , t ) ;
19
+ } ) ;
20
+
21
+ it ( 'should replay values and error' , function ( ) {
22
+ var s1 = hot ( '---^---a---b---c---# ' ) . cache ( ) ;
23
+ var expected1 = '----a---b---c---# ' ;
24
+ var expected2 = ' (abc#)' ;
25
+ var t = time ( '----------------|' ) ;
26
+
27
+ expectObservable ( s1 ) . toBe ( expected1 ) ;
28
+
29
+ rxTestScheduler . schedule ( function ( ) {
30
+ expectObservable ( s1 ) . toBe ( expected2 ) ;
31
+ } , t ) ;
32
+ } ) ;
33
+
34
+ it ( 'should replay values and and share' , function ( ) {
35
+ var s1 = hot ( '---^---a---b---c------------d--e--f-|' ) . cache ( ) ;
36
+ var expected1 = '----a---b---c------------d--e--f-|' ;
37
+ var expected2 = ' (abc)----d--e--f-|' ;
38
+ var t = time ( '----------------|' ) ;
39
+
40
+ expectObservable ( s1 ) . toBe ( expected1 ) ;
41
+
42
+ rxTestScheduler . schedule ( function ( ) {
43
+ expectObservable ( s1 ) . toBe ( expected2 ) ;
44
+ } , t ) ;
45
+ } ) ;
46
+
47
+ it ( 'should have a bufferCount that limits the replay test 1' , function ( ) {
48
+ var s1 = hot ( '---^---a---b---c------------d--e--f-|' ) . cache ( 1 ) ;
49
+ var expected1 = '----a---b---c------------d--e--f-|' ;
50
+ var expected2 = ' c--------d--e--f-|' ;
51
+ var t = time ( '----------------|' ) ;
52
+
53
+ expectObservable ( s1 ) . toBe ( expected1 ) ;
54
+
55
+ rxTestScheduler . schedule ( function ( ) {
56
+ expectObservable ( s1 ) . toBe ( expected2 ) ;
57
+ } , t ) ;
58
+ } ) ;
59
+
60
+ it ( 'should have a bufferCount that limits the replay test 2' , function ( ) {
61
+ var s1 = hot ( '---^---a---b---c------------d--e--f-|' ) . cache ( 2 ) ;
62
+ var expected1 = '----a---b---c------------d--e--f-|' ;
63
+ var expected2 = ' (bc)-----d--e--f-|' ;
64
+ var t = time ( '----------------|' ) ;
65
+
66
+ expectObservable ( s1 ) . toBe ( expected1 ) ;
67
+
68
+ rxTestScheduler . schedule ( function ( ) {
69
+ expectObservable ( s1 ) . toBe ( expected2 ) ;
70
+ } , t ) ;
71
+ } ) ;
72
+
73
+ it ( 'should accept a windowTime that limits the replay' , function ( ) {
74
+ var w = time ( '----------|' ) ;
75
+ var s1 = hot ( '---^---a---b---c------------d--e--f-|' ) . cache ( Number . POSITIVE_INFINITY , w , rxTestScheduler ) ;
76
+ var expected1 = '----a---b---c------------d--e--f-|' ;
77
+ var expected2 = ' (bc)-----d--e--f-|' ;
78
+ var t = time ( '----------------|' ) ;
79
+
80
+ expectObservable ( s1 ) . toBe ( expected1 ) ;
81
+
82
+ rxTestScheduler . schedule ( function ( ) {
83
+ expectObservable ( s1 ) . toBe ( expected2 ) ;
84
+ } , t ) ;
85
+ } ) ;
86
+
87
+ it ( 'should handle empty' , function ( ) {
88
+ var s1 = cold ( '|' ) . cache ( ) ;
89
+ var expected1 = '|' ;
90
+ var expected2 = ' |' ;
91
+ var t = time ( '----------------|' ) ;
92
+
93
+ expectObservable ( s1 ) . toBe ( expected1 ) ;
94
+
95
+ rxTestScheduler . schedule ( function ( ) {
96
+ expectObservable ( s1 ) . toBe ( expected2 ) ;
97
+ } , t ) ;
98
+ } ) ;
99
+
100
+ it ( 'should handle throw' , function ( ) {
101
+ var s1 = cold ( '#' ) . cache ( ) ;
102
+ var expected1 = '#' ;
103
+ var expected2 = ' #' ;
104
+ var t = time ( '----------------|' ) ;
105
+
106
+ expectObservable ( s1 ) . toBe ( expected1 ) ;
107
+
108
+ rxTestScheduler . schedule ( function ( ) {
109
+ expectObservable ( s1 ) . toBe ( expected2 ) ;
110
+ } , t ) ;
111
+ } ) ;
112
+
113
+ it ( 'should handle never' , function ( ) {
114
+ var s1 = cold ( '-' ) . cache ( ) ;
115
+ var expected1 = '-' ;
116
+ var expected2 = ' -' ;
117
+ var t = time ( '----------------|' ) ;
118
+
119
+ expectObservable ( s1 ) . toBe ( expected1 ) ;
120
+
121
+ rxTestScheduler . schedule ( function ( ) {
122
+ expectObservable ( s1 ) . toBe ( expected2 ) ;
123
+ } , t ) ;
124
+ } ) ;
125
+ } ) ;
0 commit comments