cryptpad/www/assert/assertions.js

52 lines
1.5 KiB
JavaScript

define([], function () {
return function () {
var failMessages = [];
var passed = 0;
var ASSERTS = [];
var MESSAGES = [];
var assert = function (test, msg) {
MESSAGES.push(msg || false);
ASSERTS.push(function (cb, i) {
test(function (result) {
if (result === true) {
passed++;
cb();
} else {
cb({
test: i,
message: msg,
output: result,
});
}
}, msg);
});
};
assert.run = function (cb, progress) {
progress = progress || function () {};
var count = ASSERTS.length;
var total = ASSERTS.length;
var done = function (err) {
count--;
if (err) { failMessages.push(err); }
if (count === 0) {
cb({
total: ASSERTS.length,
passed: passed,
errors: failMessages,
});
}
};
ASSERTS.forEach(function (f, index) {
f(function (err) {
//console.log("test " + index);
progress(index, total);
done(err, index);
}, index);
});
};
return assert;
};
});