61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
"use strict";
|
|
|
|
var flatMap = require('../index')
|
|
, assert = require('assert');
|
|
|
|
var words = [ "one", "two", "three", "four", "five" ];
|
|
|
|
describe("flatmap function", function() {
|
|
|
|
it("should unwrap arrays returned from iterator", function() {
|
|
var arr = flatMap(words, function(w) {
|
|
return w.split('');
|
|
});
|
|
assert.ok(Array.isArray(arr));
|
|
assert.equal(arr.join(","), "o,n,e,t,w,o,t,h,r,e,e,f,o,u,r,f,i,v,e");
|
|
assert.equal(arr.length, 19);
|
|
});
|
|
|
|
it("should return empty arrays on non-array argument", function() {
|
|
var arr = flatMap({}, function(w) {
|
|
return '';
|
|
});
|
|
assert.ok(Array.isArray(arr));
|
|
assert.equal(arr.length, 0);
|
|
});
|
|
|
|
it("should return empty arrays on undefined argument", function() {
|
|
var arr = flatMap(undefined, function(w) {
|
|
return '';
|
|
});
|
|
assert.ok(Array.isArray(arr));
|
|
assert.equal(arr.length, 0);
|
|
});
|
|
|
|
it("should return empty arrays when iterator returns nulls", function() {
|
|
var arr = flatMap(words, function() {
|
|
return null;
|
|
});
|
|
assert.ok(Array.isArray(arr));
|
|
assert.equal(arr.length, 0);
|
|
});
|
|
|
|
it("should work like filter when iterator returns nulls", function() {
|
|
var arr = flatMap(words, function(w) {
|
|
return w.length % 2 == 0 ? w : null;
|
|
});
|
|
assert.ok(Array.isArray(arr));
|
|
assert.equal(arr.length, 2);
|
|
assert.equal(arr.join(''), 'fourfive');
|
|
});
|
|
|
|
it("augment or shrink results", function() {
|
|
var iter = function(w) {
|
|
return w.length % 2 == 0 ? [ 2, 2 ] : [1];
|
|
};
|
|
assert.equal(flatMap(['bee', 'warp'], iter).length, 3);
|
|
assert.equal(flatMap(['be', 'warp'], iter).length, 4);
|
|
assert.equal(flatMap([], iter).length, 0);
|
|
});
|
|
|
|
}); |