1 | var lazyIterators = require("../lib/lazy-iterators");
|
2 |
|
3 | exports.convertingArrayToIteratorAndBack = function(test) {
|
4 | var original = ["apple", "banana", "coconut"];
|
5 | var iterator = lazyIterators.fromArray(original);
|
6 | var reconstituted = iterator.toArray();
|
7 | test.deepEqual(original, reconstituted);
|
8 | test.done();
|
9 | };
|
10 |
|
11 | exports.mapAppliesFunctionToEveryElement = function(test) {
|
12 | var original = [1, 2, 3];
|
13 | var squared = lazyIterators.fromArray(original).map(function(i) {
|
14 | return i * i;
|
15 | }).toArray();
|
16 | test.deepEqual([1, 4, 9], squared);
|
17 | test.done();
|
18 | };
|
19 |
|
20 | exports.mappingFunctionIsOnlyCalledWhenNecessary = function(test) {
|
21 | var original = [1, 2, 3];
|
22 | var faultySquared = lazyIterators.fromArray(original).map(function(i) {
|
23 | if (i === 1) {
|
24 | return i;
|
25 | } else {
|
26 | throw new Error("Can only calculate the square of one");
|
27 | }
|
28 | }).first();
|
29 | test.deepEqual(1, faultySquared);
|
30 | test.done();
|
31 | };
|
32 |
|
33 | exports.filterRetainsElementsThatSatisfyPredicate = function(test) {
|
34 | var original = [1, 2, 3, 4];
|
35 | var even = lazyIterators.fromArray(original).filter(function(i) {
|
36 | return i % 2 === 0;
|
37 | }).toArray();
|
38 | test.deepEqual([2, 4], even);
|
39 | test.done();
|
40 | };
|
41 |
|
42 | exports.firstReturnsFirstElementOfArray = function(test) {
|
43 | var original = [1, 2, 3, 4];
|
44 | var first = lazyIterators.fromArray(original).first();
|
45 | test.deepEqual(1, first);
|
46 | test.done();
|
47 | };
|
48 |
|
49 | exports.firstIsNullIfArrayIsEmpty = function(test) {
|
50 | var first = lazyIterators.fromArray([]).first();
|
51 | test.same(null, first);
|
52 | test.done();
|
53 | };
|