JavaScript Testing Framework
A single-file testing framework.
by nathan
JavaScript
var test = function (a) {
var b,
i,
testObj = this,
results = {
passes : 0,
fails : 0,
errors : 0,
skips : 0,
testCases : {}
},
testRunner,
empty = function () {};
b = { // built-in functions
setUp : empty,
tearDown : empty
};
// separate out non-test case functions using b as a list of keywords
for (i in b) {
if (a[i] !== undefined) {
b[i] = a[i];
delete a[i];
}
}
testRunner = {
// Tests (and setUp/tearDown) are executed in the context of this object.
// All the properties below are accessible to them via the `this` keyword.
globalObject : (function () {
return this;
}).call(),
message : function (message) {
results[i].messages.push(message);
},
assert : function (condition, message) {
results[i].assertions.push({
"pass" : condition,
"message" : message
});
results.passes = results.passes + Number(condition);
results.fails = results.fails + Number(!condition);
},
assertTrue : function (condition, message) {
if (message === undefined) {
message = "Expected true; got " + condition + ".";
}
assert(condition, message);
},
assertFalse : function (condition, message) {
if (message === undefined) {
message = "Expected false; got " + condition + ".";
}
assert(!condition, message);
},
assertEqual : function (item1, item2, message) {
if (message === undefined) {
message = "Expected " + item2 + "; got " + item1 + ".";
}
assert(item1 == item2, message);
},
assertNotEqual : function...