1
1
///<reference path='../resources/jest.d.ts'/>
2
2
///<reference path='../dist/immutable.d.ts'/>
3
+ declare var Symbol : any ;
3
4
jest . autoMockOff ( ) ;
4
5
5
6
import Immutable = require( 'immutable' ) ;
@@ -78,21 +79,21 @@ describe('IterableSequence', () => {
78
79
79
80
it ( 'creates a sequence from a raw iterable' , ( ) => {
80
81
var i = new SimpleIterable ( 10 ) ;
81
- var s = Immutable . Seq ( i [ '@@iterator' ] ( ) ) ;
82
+ var s = Immutable . Seq ( i [ ITERATOR_SYMBOL ] ( ) ) ;
82
83
expect ( s . take ( 5 ) . toArray ( ) ) . toEqual ( [ 0 , 1 , 2 , 3 , 4 ] ) ;
83
84
} )
84
85
85
86
it ( 'is stable' , ( ) => {
86
87
var i = new SimpleIterable ( 10 ) ;
87
- var s = Immutable . Seq ( i [ '@@iterator' ] ( ) ) ;
88
+ var s = Immutable . Seq ( i [ ITERATOR_SYMBOL ] ( ) ) ;
88
89
expect ( s . take ( 5 ) . toArray ( ) ) . toEqual ( [ 0 , 1 , 2 , 3 , 4 ] ) ;
89
90
expect ( s . take ( 5 ) . toArray ( ) ) . toEqual ( [ 0 , 1 , 2 , 3 , 4 ] ) ;
90
91
expect ( s . take ( 5 ) . toArray ( ) ) . toEqual ( [ 0 , 1 , 2 , 3 , 4 ] ) ;
91
92
} )
92
93
93
94
it ( 'counts iterations' , ( ) => {
94
95
var i = new SimpleIterable ( 10 ) ;
95
- var s = Immutable . Seq ( i [ '@@iterator' ] ( ) ) ;
96
+ var s = Immutable . Seq ( i [ ITERATOR_SYMBOL ] ( ) ) ;
96
97
expect ( s . forEach ( x => x ) ) . toEqual ( 10 ) ;
97
98
expect ( s . take ( 5 ) . forEach ( x => x ) ) . toEqual ( 5 ) ;
98
99
expect ( s . forEach ( x => x < 3 ) ) . toEqual ( 4 ) ;
@@ -101,7 +102,7 @@ describe('IterableSequence', () => {
101
102
it ( 'memoizes the iterator' , ( ) => {
102
103
var mockFn = jest . genMockFunction ( ) ;
103
104
var i = new SimpleIterable ( 10 , mockFn ) ;
104
- var s = Immutable . Seq ( i [ '@@iterator' ] ( ) ) ;
105
+ var s = Immutable . Seq ( i [ ITERATOR_SYMBOL ] ( ) ) ;
105
106
expect ( s . take ( 3 ) . toArray ( ) ) . toEqual ( [ 0 , 1 , 2 ] ) ;
106
107
expect ( mockFn . mock . calls ) . toEqual ( [ [ 0 ] , [ 1 ] , [ 2 ] ] ) ;
107
108
@@ -117,7 +118,7 @@ describe('IterableSequence', () => {
117
118
it ( 'can be iterated' , ( ) => {
118
119
var mockFn = jest . genMockFunction ( ) ;
119
120
var i = new SimpleIterable ( 3 , mockFn ) ;
120
- var seq = Immutable . Seq ( i [ '@@iterator' ] ( ) ) ;
121
+ var seq = Immutable . Seq ( i [ ITERATOR_SYMBOL ] ( ) ) ;
121
122
var entries = seq . entries ( ) ;
122
123
expect ( entries . next ( ) ) . toEqual ( { value : [ 0 , 0 ] , done : false } ) ;
123
124
// The iteration is lazy
@@ -137,11 +138,11 @@ describe('IterableSequence', () => {
137
138
138
139
it ( 'can iterate an skipped seq based on an iterator' , ( ) => {
139
140
var i = new SimpleIterable ( 4 ) ;
140
- var seq = Immutable . Seq ( i [ '@@iterator' ] ( ) ) ;
141
+ var seq = Immutable . Seq ( i [ ITERATOR_SYMBOL ] ( ) ) ;
141
142
expect ( seq . size ) . toBe ( undefined ) ;
142
143
var skipped = seq . skip ( 2 ) ;
143
144
expect ( skipped . size ) . toBe ( undefined ) ;
144
- var iter = skipped [ '@@iterator' ] ( ) ;
145
+ var iter = skipped [ ITERATOR_SYMBOL ] ( ) ;
145
146
// The first two were skipped
146
147
expect ( iter . next ( ) ) . toEqual ( { value : 2 , done : false } ) ;
147
148
expect ( iter . next ( ) ) . toEqual ( { value : 3 , done : false } ) ;
@@ -153,12 +154,14 @@ describe('IterableSequence', () => {
153
154
154
155
155
156
// Helper for this test
157
+ var ITERATOR_SYMBOL =
158
+ typeof Symbol === 'function' && Symbol . iterator || '@@iterator' ;
156
159
157
160
function SimpleIterable ( max ?: number , watcher ?: any ) {
158
161
this . max = max ;
159
162
this . watcher = watcher ;
160
163
}
161
- SimpleIterable . prototype [ '@@iterator' ] = function ( ) {
164
+ SimpleIterable . prototype [ ITERATOR_SYMBOL ] = function ( ) {
162
165
return new SimpleIterator ( this ) ;
163
166
}
164
167
@@ -173,6 +176,6 @@ SimpleIterator.prototype.next = function() {
173
176
this . iterable . watcher && this . iterable . watcher ( this . value ) ;
174
177
return { value : this . value ++ , done : false } ;
175
178
}
176
- SimpleIterator . prototype [ '@@iterator' ] = function ( ) {
179
+ SimpleIterator . prototype [ ITERATOR_SYMBOL ] = function ( ) {
177
180
return this ;
178
181
}
0 commit comments