257 lines
6.8 KiB
JavaScript
257 lines
6.8 KiB
JavaScript
/* THIS FILE SHOULD BE BROWSER-COMPATIBLE JS!
|
|
* You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build.
|
|
* Only code on that line will be removed, its mostly to avoid requiring code
|
|
* that is node specific
|
|
*/
|
|
|
|
var nodeunit = require('../lib/nodeunit'); // @REMOVE_LINE_FOR_BROWSER
|
|
|
|
exports.testTestCase = function (test) {
|
|
test.expect(7);
|
|
var call_order = [];
|
|
var s = {
|
|
setUp: function (callback) {
|
|
call_order.push('setUp');
|
|
test.equals(this.one, undefined, 'in setUp, this.one not set');
|
|
this.one = 1;
|
|
callback();
|
|
},
|
|
tearDown: function (callback) {
|
|
call_order.push('tearDown');
|
|
test.ok(true, 'tearDown called');
|
|
callback();
|
|
},
|
|
test1: function (t) {
|
|
call_order.push('test1');
|
|
test.equals(this.one, 1, 'in test1, this.one is 1');
|
|
this.one = 2;
|
|
t.done();
|
|
},
|
|
test2: function (t) {
|
|
call_order.push('test2');
|
|
test.equals(this.one, 1, 'in test2, this.one is still 1');
|
|
t.done();
|
|
}
|
|
};
|
|
nodeunit.runSuite(null, s, {}, function () {
|
|
test.same(call_order, [
|
|
'setUp', 'test1', 'tearDown',
|
|
'setUp', 'test2', 'tearDown'
|
|
]);
|
|
test.done();
|
|
});
|
|
};
|
|
|
|
exports.tearDownAfterError = function (test) {
|
|
test.expect(1);
|
|
var s = {
|
|
tearDown: function (callback) {
|
|
test.ok(true, 'tearDown called');
|
|
callback();
|
|
},
|
|
test: function (t) {
|
|
throw new Error('some error');
|
|
}
|
|
};
|
|
nodeunit.runSuite(null, s, {}, function () {
|
|
test.done();
|
|
});
|
|
};
|
|
|
|
exports.catchSetUpError = function (test) {
|
|
test.expect(2);
|
|
var test_error = new Error('test error');
|
|
var s = {
|
|
setUp: function (callback) {
|
|
throw test_error;
|
|
},
|
|
test: function (t) {
|
|
test.ok(false, 'test function should not be called');
|
|
t.done();
|
|
}
|
|
};
|
|
nodeunit.runSuite(null, s, {}, function (err, assertions) {
|
|
test.equal(assertions.length, 1);
|
|
test.equal(assertions[0].error, test_error);
|
|
test.done();
|
|
});
|
|
};
|
|
|
|
exports.setUpErrorCallback = function (test) {
|
|
test.expect(2);
|
|
var test_error = new Error('test error');
|
|
var s = {
|
|
setUp: function (callback) {
|
|
callback(test_error);
|
|
},
|
|
test: function (t) {
|
|
test.ok(false, 'test function should not be called');
|
|
t.done();
|
|
}
|
|
};
|
|
nodeunit.runSuite(null, s, {}, function (err, assertions) {
|
|
test.equal(assertions.length, 1);
|
|
test.equal(assertions[0].error, test_error);
|
|
test.done();
|
|
});
|
|
};
|
|
|
|
exports.catchTearDownError = function (test) {
|
|
test.expect(2);
|
|
var test_error = new Error('test error');
|
|
var s = {
|
|
tearDown: function (callback) {
|
|
throw test_error;
|
|
},
|
|
test: function (t) {
|
|
t.done();
|
|
}
|
|
};
|
|
nodeunit.runSuite(null, s, {}, function (err, assertions) {
|
|
test.equal(assertions.length, 1);
|
|
test.equal(assertions[0].error, test_error);
|
|
test.done();
|
|
});
|
|
};
|
|
|
|
exports.tearDownErrorCallback = function (test) {
|
|
test.expect(2);
|
|
var test_error = new Error('test error');
|
|
var s = {
|
|
tearDown: function (callback) {
|
|
callback(test_error);
|
|
},
|
|
test: function (t) {
|
|
t.done();
|
|
}
|
|
};
|
|
nodeunit.runSuite(null, s, {}, function (err, assertions) {
|
|
test.equal(assertions.length, 1);
|
|
test.equal(assertions[0].error, test_error);
|
|
test.done();
|
|
});
|
|
};
|
|
|
|
exports.testErrorAndtearDownError = function (test) {
|
|
test.expect(3);
|
|
var error1 = new Error('test error one');
|
|
var error2 = new Error('test error two');
|
|
var s = {
|
|
tearDown: function (callback) {
|
|
callback(error2);
|
|
},
|
|
test: function (t) {
|
|
t.done(error1);
|
|
}
|
|
};
|
|
nodeunit.runSuite(null, s, {}, function (err, assertions) {
|
|
test.equal(assertions.length, 2);
|
|
test.equal(assertions[0].error, error1);
|
|
test.equal(assertions[1].error, error2);
|
|
test.done();
|
|
});
|
|
};
|
|
|
|
exports.testCaseGroups = function (test) {
|
|
var call_order = [];
|
|
var s = {
|
|
setUp: function (callback) {
|
|
call_order.push('setUp');
|
|
callback();
|
|
},
|
|
tearDown: function (callback) {
|
|
call_order.push('tearDown');
|
|
callback();
|
|
},
|
|
test1: function (test) {
|
|
call_order.push('test1');
|
|
test.done();
|
|
},
|
|
group1: {
|
|
test2: function (test) {
|
|
call_order.push('group1.test2');
|
|
test.done();
|
|
}
|
|
}
|
|
};
|
|
nodeunit.runSuite(null, s, {}, function (err, assertions) {
|
|
test.same(call_order, [
|
|
'setUp',
|
|
'test1',
|
|
'tearDown',
|
|
'setUp',
|
|
'group1.test2',
|
|
'tearDown'
|
|
]);
|
|
test.done();
|
|
});
|
|
};
|
|
|
|
exports.nestedTestCases = function (test) {
|
|
var call_order = [];
|
|
var s = {
|
|
setUp: function (callback) {
|
|
call_order.push('setUp');
|
|
callback();
|
|
},
|
|
tearDown: function (callback) {
|
|
call_order.push('tearDown');
|
|
callback();
|
|
},
|
|
test1: function (test) {
|
|
call_order.push('test1');
|
|
test.done();
|
|
},
|
|
group1: {
|
|
setUp: function (callback) {
|
|
call_order.push('group1.setUp');
|
|
callback();
|
|
},
|
|
tearDown: function (callback) {
|
|
call_order.push('group1.tearDown');
|
|
callback();
|
|
},
|
|
test2: function (test) {
|
|
call_order.push('group1.test2');
|
|
test.done();
|
|
}
|
|
}
|
|
};
|
|
nodeunit.runSuite(null, s, {}, function (err, assertions) {
|
|
test.same(call_order, [
|
|
'setUp',
|
|
'test1',
|
|
'tearDown',
|
|
'setUp',
|
|
'group1.setUp',
|
|
'group1.test2',
|
|
'group1.tearDown',
|
|
'tearDown'
|
|
]);
|
|
test.done();
|
|
});
|
|
};
|
|
|
|
exports.deepNestedTestCases = function (test) {
|
|
var val = 'foo';
|
|
var s = {
|
|
setUp: function (callback) {
|
|
val = 'bar';
|
|
callback();
|
|
},
|
|
group1: {
|
|
test: {
|
|
test2: function (test) {
|
|
test.equal(val, 'bar');
|
|
test.done();
|
|
}
|
|
}
|
|
}
|
|
};
|
|
nodeunit.runSuite(null, s, {}, function (err, assertions) {
|
|
test.ok(!assertions[0].failed());
|
|
test.equal(assertions.length, 1);
|
|
test.done();
|
|
});
|
|
};
|