58 lines
2.2 KiB
JavaScript
58 lines
2.2 KiB
JavaScript
var _equals = _equals || _e;
|
|
|
|
objToArray = function(obj) {
|
|
var ret = [];
|
|
for(item in obj)
|
|
ret[item] = obj[item];
|
|
return ret;
|
|
}
|
|
|
|
var tests = [
|
|
["average",average([1,2,3,4]),2.5],
|
|
["every",every([1,1,1,1],1),true],
|
|
["filter",filter([1,2,3,4],function(x){return x % 2 == 0}),[2,4]],
|
|
["fold",fold(['1',2,'3',4,5],function(a,b){return a+b},0),"012345"],
|
|
["foldRight",foldRight(['1',2,'3',4,5],function(a,b){return a+b},0),"9321"],
|
|
["groupBy",groupBy([3.14,3.65,10,10.4,15],function(x){return Math.round(x)}),objToArray({3:[3.14],4:[3.65],10:[10,10.4],15:[15]})],
|
|
["map",map(["John","Apple","Seed"],function(x){return x.length}),[4,5,4]],
|
|
["none",none([0,2,3,4,5],1),true],
|
|
["product",product(1,5,function(x){return x*x}),14400],
|
|
["range",range(5,3,-3),[5]],
|
|
["reduce",reduce([1,2,3,4],function(a,b){return a+b}),10],
|
|
["reduceRight",reduceRight(['1',2,'3',4,5],function(a,b){return a+b}),"9321"],
|
|
["reverse",reverse([1,2,3,4,5]),[5,4,3,2,1]],
|
|
["some",some([1,2,3,4,5],2),true],
|
|
["sum",sum(1,5,function(x){return x*x*x}),225]
|
|
];
|
|
|
|
var test_count = tests.length;
|
|
var pass_count = 0;
|
|
|
|
for(test in tests) {
|
|
var passed = false;
|
|
var name = tests[test][0];
|
|
var result = tests[test][1];
|
|
var expect = tests[test][2];
|
|
var result_type = Object.prototype.toString.call(result);
|
|
var expect_type = Object.prototype.toString.call(expect);
|
|
var type_mismatch = result_type !== expect_type;
|
|
switch(Object.prototype.toString.call(expect)) {
|
|
case "[object Array]":
|
|
if(_equals(result,expect)) {
|
|
passed = true;
|
|
pass_count++;
|
|
}
|
|
console.log("[" + (passed ? "PASS" : "FAIL") + "] " + name + ", expect: [" + expect + "], result: [" + result + "]" + (type_mismatch ? " (type mismatch)" : ""));
|
|
break;
|
|
default:
|
|
if(result === expect) {
|
|
passed = true;
|
|
pass_count++;
|
|
}
|
|
console.log("[" + (passed ? "PASS" : "FAIL") + "] " + name + ", expect: " + expect + ", result: " + result + (type_mismatch ? " (type mismatch)" : ""));
|
|
break;
|
|
}
|
|
}
|
|
|
|
console.log(pass_count+"/"+test_count+" tests passed.");
|