var map = require('../'); var test = require('tape'); test('numbers -> letters', function (t) { t.plan(2); var a = map([97,98,99], function (c) { return String.fromCharCode(c); }); t.equal(a.join(''), 'abc'); var b = map(cripple([97,98,99]), function (c) { return String.fromCharCode(c); }); t.equal(b.join(''), 'abc'); }); test('elements and indexes', function (t) { t.plan(8); var x = { q: 5 }, y = 3, z = null; t.deepEqual( map([x,y,z], function (c, i) { return i }), [ 0, 1, 2 ], 'index check' ); t.deepEqual( map([x,y,z], function (c, i) { return i }), [ 0, 1, 2 ], 'crippled index check' ); var xs0 = [ x, y, z ]; map(xs0, function (c, i, xs) { t.strictEqual(xs, xs0, 'argument[2]'); }); var xs1 = [ x, y, z ]; map(xs1, function (c, i, xs) { t.strictEqual(xs, xs1, 'crippled argument[2]'); }); }); test('ignore holes', function (t) { t.plan(2); t.deepEqual( map(new Array(5), function (x) { return x }), [] ); t.deepEqual( map(cripple(new Array(5)), function (x) { return x }), [] ); }); test('sparse map', function (t) { t.plan(2); var xs = new Array(5); xs[2] = 'a'; xs[4] = 'b'; t.equal( map(xs, function (x, i) { return x + i }).join(''), 'a2b4' ); var ys = new Array(5); ys[2] = 'a'; ys[4] = 'b'; t.equal( map(cripple(xs), function (x, i) { return x + i }).join(''), 'a2b4' ); t.end(); }); function cripple (xs) { xs.map = undefined; return xs; }