12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- var reduce = require('../');
- var test = require('tape');
- test('numeric reduces', function (t) {
- t.plan(6);
-
- var xs = [ 1, 2, 3, 4 ];
- t.equal(
- reduce(xs, function (acc, x) { return acc + x }, 0),
- 10
- );
- t.equal(
- reduce(xs, function (acc, x) { return acc + x }, 100),
- 110
- );
- t.equal(
- reduce(xs, function (acc, x) { return acc + x }),
- 10
- );
-
- var ys = cripple([ 1, 2, 3, 4 ]);
- t.equal(
- reduce(ys, function (acc, x) { return acc + x }, 0),
- 10
- );
- t.equal(
- reduce(ys, function (acc, x) { return acc + x }, 100),
- 110
- );
- t.equal(
- reduce(ys, function (acc, x) { return acc + x }),
- 10
- );
- });
- test('holes', function (t) {
- t.plan(4);
-
- var xs = Array(10);
- xs[2] = 5; xs[4] = 6; xs[8] = 4;
- t.equal(
- reduce(xs, function (acc, x) { return acc + x }),
- 15
- );
- t.equal(
- reduce(xs, function (acc, x) { return acc + x }, 100),
- 115
- );
-
- var ys = cripple(Array(10));
- ys[2] = 5; ys[4] = 6; ys[8] = 4;
- t.equal(
- reduce(ys, function (acc, x) { return acc + x }),
- 15
- );
- t.equal(
- reduce(ys, function (acc, x) { return acc + x }, 100),
- 115
- );
- });
- test('object', function (t) {
- t.plan(1);
- var obj = { a: 3, b: 4, c: 5 };
- var res = reduce(objectKeys(obj), function (acc, key) {
- acc[key.toUpperCase()] = obj[key] * 111;
- return acc;
- }, {});
- t.deepEqual(res, { A: 333, B: 444, C: 555 });
- });
- function cripple (xs) {
- xs.reduce = undefined;
- return xs;
- }
- var objectKeys = function (obj) {
- var keys = [];
- for (var key in obj) {
- if (hasOwn.call(obj, key)) keys.push(key);
- }
- return keys;
- };
- var hasOwn = Object.prototype.hasOwnProperty;
|