blob: 8f50228c9f1f462ad4785eeb98c2051c2fe02fe7 [file] [log] [blame]
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;
}