This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
1.8 KiB
85 lines
1.8 KiB
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;
|
|
|