前回に引き続いて,
Test.Unit.Assertions
Test.
0251:Test.Unit.Assertions = Class.create();
0252:Test.Unit.Assertions.prototype = {
0253: initialize: function() {
0254: this.assertions = 0;
0255: this.failures = 0;
0256: this.errors = 0;
0257: this.messages = [];
0258: },
252~258行目のinitializeは,
0259: summary: function() {
0260: return (
0261: this.assertions + " assertions, " +
0262: this.failures + " failures, " +
0263: this.errors + " errors" + "\n" +
0264: this.messages.join("\n"));
0265: },
259~265行目のsummaryは,
0266: pass: function() {
0267: this.assertions++;
0268: },
266~268行目のpassは,
0269: fail: function(message) {
0270: this.failures++;
0271: this.messages.push("Failure: " + message);
0272: },
269~272行目のfailは,
0273: info: function(message) {
0274: this.messages.push("Info: " + message);
0275: },
273~275行目のinfoは,
0276: error: function(error) {
0277: this.errors++;
0278: this.messages.push(error.name + ": "+ error.message + "(" + Test.Unit.inspect(error) +")");
0279: },
276~279行目のerrorは,
0280: status: function() {
0281: if (this.failures > 0) return 'failed';
0282: if (this.errors > 0) return 'error';
0283: return 'passed';
0284: },
280~284行目のstatusは,
アサートのための関数群
0285: assert: function(expression) {
0286: var message = arguments[1] || 'assert: got "' + Test.Unit.inspect(expression) + '"';
0287: try { expression ? this.pass() :
0288: this.fail(message); }
0289: catch(e) { this.error(e); }
0290: },
285~290行目のassertは,
0291: assertEqual: function(expected, actual) {
0292: var message = arguments[2] || "assertEqual";
0293: try { (expected == actual) ? this.pass() :
0294: this.fail(message + ': expected "' + Test.Unit.inspect(expected) +
0295: '", actual "' + Test.Unit.inspect(actual) + '"'); }
0296: catch(e) { this.error(e); }
0297: },
291~297行目のassertEqualは,
0298: assertInspect: function(expected, actual) {
0299: var message = arguments[2] || "assertInspect";
0300: try { (expected == actual.inspect()) ? this.pass() :
0301: this.fail(message + ': expected "' + Test.Unit.inspect(expected) +
0302: '", actual "' + Test.Unit.inspect(actual) + '"'); }
0303: catch(e) { this.error(e); }
0304: },
298~304行目のassertInspectは,
0305: assertEnumEqual: function(expected, actual) {
0306: var message = arguments[2] || "assertEnumEqual";
0307: try { $A(expected).length == $A(actual).length &&
0308: expected.zip(actual).all(function(pair) { return pair[0] == pair[1] }) ?
0309: this.pass() : this.fail(message + ': expected ' + Test.Unit.inspect(expected) +
0310: ', actual ' + Test.Unit.inspect(actual)); }
0311: catch(e) { this.error(e); }
0312: },
305~312行目のassertEnumEqualは,
0313: assertNotEqual: function(expected, actual) {
0314: var message = arguments[2] || "assertNotEqual";
0315: try { (expected != actual) ? this.pass() :
0316: this.fail(message + ': got "' + Test.Unit.inspect(actual) + '"'); }
0317: catch(e) { this.error(e); }
0318: },
313~318行目のassertNotEqualは,
0319: assertIdentical: function(expected, actual) {
0320: var message = arguments[2] || "assertIdentical";
0321: try { (expected === actual) ? this.pass() :
0322: this.fail(message + ': expected "' + Test.Unit.inspect(expected) +
0323: '", actual "' + Test.Unit.inspect(actual) + '"'); }
0324: catch(e) { this.error(e); }
0325: },
319~325行目のassertIdenticalは,
0326: assertNotIdentical: function(expected, actual) {
0327: var message = arguments[2] || "assertNotIdentical";
0328: try { !(expected === actual) ? this.pass() :
0329: this.fail(message + ': expected "' + Test.Unit.inspect(expected) +
0330: '", actual "' + Test.Unit.inspect(actual) + '"'); }
0331: catch(e) { this.error(e); }
0332: },
326~332行目のassertNotIdenticalは,