64 lines
1.4 KiB
JavaScript
64 lines
1.4 KiB
JavaScript
var fs = require("fs"),
|
|
assert = require("assert");
|
|
|
|
var runCount = 0,
|
|
testCount = 0;
|
|
|
|
function compare(expected, result){
|
|
if(typeof expected !== typeof result){
|
|
throw Error("types didn't match");
|
|
}
|
|
if(typeof expected !== "object" || expected === null){
|
|
if(expected !== result){
|
|
throw Error("result doesn't equal expected");
|
|
}
|
|
return;
|
|
}
|
|
|
|
for(var prop in expected){
|
|
if(!(prop in result)) throw Error("result didn't contain property " + prop);
|
|
compare(expected[prop], result[prop]);
|
|
}
|
|
}
|
|
|
|
function runTests(test){
|
|
//read files, load them, run them
|
|
fs.readdirSync(__dirname + test.dir
|
|
).map(function(file){
|
|
if(file[0] === ".") return false;
|
|
if(file.substr(-5) === ".json") return JSON.parse(
|
|
fs.readFileSync(__dirname + test.dir + file)
|
|
);
|
|
return require(__dirname + test.dir + file);
|
|
}).forEach(function(file){
|
|
if(!file) return;
|
|
var second = false;
|
|
|
|
runCount++;
|
|
|
|
console.log("Testing:", file.name);
|
|
|
|
test.test(file, function(err, dom){
|
|
assert.ifError(err);
|
|
compare(file.expected, dom);
|
|
|
|
if(second){
|
|
runCount--;
|
|
testCount++;
|
|
}
|
|
else second = true;
|
|
});
|
|
});
|
|
console.log("->", test.dir.slice(1, -1), "started");
|
|
}
|
|
|
|
//run all tests
|
|
[
|
|
"./02-dom_utils.js"
|
|
].map(require).forEach(runTests);
|
|
|
|
//log the results
|
|
(function check(){
|
|
if(runCount !== 0) return process.nextTick(check);
|
|
console.log("Total tests:", testCount);
|
|
}()); |