8000 Pass iterable tests for node v0.12 · sjfloat/immutable-js@c203ddb · GitHub
[go: up one dir, main page]

Skip to content

Commit c203ddb

Browse files
committed
Pass iterable tests for node v0.12
1 parent 59028b5 commit c203ddb

File tree

1 file changed

+12
-9
lines changed

__tests__/IterableSeq.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
///<reference path='../resources/jest.d.ts'/>
22
///<reference path='../dist/immutable.d.ts'/>
3+
declare var Symbol: any;
34
jest.autoMockOff();
45

56
import Immutable = require('immutable');
@@ -78,21 +79,21 @@ describe('IterableSequence', () => {
7879

7980
it('creates a sequence from a raw iterable', () => {
8081
var i = new SimpleIterable(10);
81-
var s = Immutable.Seq(i['@@iterator']());
82+
var s = Immutable.Seq(i[ITERATOR_SYMBOL]());
8283
expect(s.take(5).toArray()).toEqual([ 0,1,2,3,4 ]);
8384
})
8485

8586
it('is stable', () => {
8687
var i = new SimpleIterable(10);
87-
var s = Immutable.Seq(i['@@iterator']());
88+
var s = Immutable.Seq(i[ITERATOR_SYMBOL]());
8889
expect(s.take(5).toArray()).toEqual([ 0,1,2,3,4 ]);
8990
expect(s.take(5).toArray()).toEqual([ 0,1,2,3,4 ]);
9091
expect(s.take(5).toArray()).toEqual([ 0,1,2,3,4 ]);
9192
})
9293

9394
it('counts iterations', () => {
9495
var i = new SimpleIterable(10);
95-
var s = Immutable.Seq(i['@@iterator']());
96+
var s = Immutable.Seq(i[ITERATOR_SYMBOL]());
9697
expect(s.forEach(x => x)).toEqual(10);
9798
expect(s.take(5).forEach(x => x)).toEqual(5);
9899
expect(s.forEach(x => x < 3)).toEqual(4);
@@ -101,7 +102,7 @@ describe('IterableSequence', () => {
101102
it('memoizes the iterator', () => {
102103
var mockFn = jest.genMockFunction();
103104
var i = new SimpleIterable(10, mockFn);
104-
var s = Immutable.Seq(i['@@iterator']());
105+
var s = Immutable.Seq(i[ITERATOR_SYMBOL]());
105106
expect(s.take(3).toArray()).toEqual([ 0,1,2 ]);
106107
expect(mockFn.mock.calls).toEqual([[0],[1],[2]]);
107108

@@ -117,7 +118,7 @@ describe('IterableSequence', () => {
117118
it('can be iterated', () => {
118119
var mockFn = jest.genMockFunction();
119120
var i = new SimpleIterable(3, mockFn);
120-
var seq = Immutable.Seq(i['@@iterator']());
121+
var seq = Immutable.Seq(i[ITERATOR_SYMBOL]());
121122
var entries = seq.entries();
122123
expect(entries.next()).toEqual({ value: [0, 0], done: false });
123124
// The iteration is lazy
@@ -137,11 +138,11 @@ describe('IterableSequence', () => {
137138

138139
it('can iterate an skipped seq based on an iterator', () => {
139140
var i = new SimpleIterable(4);
140-
var seq = Immutable.Seq(i['@@iterator']());
141+
var seq = Immutable.Seq(i[ITERATOR_SYMBOL]());
141142
expect(seq.size).toBe(undefined);
142143
var skipped = seq.skip(2);
143144
expect(skipped.size).toBe(undefined);
144-
var iter = skipped['@@iterator']();
145+
var iter = skipped[ITERATOR_SYMBOL]();
145146
// The first two were skipped
146147
expect(iter.next()).toEqual({ value: 2, done: false });
147148
expect(iter.next()).toEqual({ value: 3, done: false });
@@ -153,12 +154,14 @@ describe('IterableSequence', () => {
153154

154155

155156
// Helper for this test
157+
var ITERATOR_SYMBOL =
158+
typeof Symbol === 'function' && Symbol.iterator || '@@iterator';
156159

157160
function SimpleIterable(max?: number, watcher?: any) {
158161
this.max = max;
159162
this.watcher = watcher;
160163
}
161-
SimpleIterable.prototype['@@iterator'] = function() {
164+
SimpleIterable.prototype[ITERATOR_SYMBOL] = function() {
162165
return new SimpleIterator(this);
163166
}
164167

@@ -173,6 +176,6 @@ SimpleIterator.prototype.next = function() {
173176
this.iterable.watcher && this.iterable.watcher(this.value);
174177
return { value: this.value++, done: false };
175178
}
176-
SimpleIterator.prototype['@@iterator'] = function() {
179+
SimpleIterator.prototype[ITERATOR_SYMBOL] = function() {
177180
return this;
178181
}

0 commit comments

Comments
 (0)
0