1 jls.loader.provide('jls.jsunit.TestResult');
  2 
  3 jls.loader.require('jls.lang.AssertionError');
  4 jls.loader.require('jls.jsunit.TestFailure');
  5 
  6 jls.jsunit.TestResult = jls.lang.Class.create(
  7 {
  8     initialize : function() {
  9 		this._errors = [];
 10         this._failures = [];
 11         this._runTests = 0;
 12     },
 13     run : function(test) {
 14         this.startTest(test);
 15         try {
 16             test.runBare();
 17         }
 18         catch (e) {
 19             //jls.lang.System.out.println('e: ' + e);
 20             if (e instanceof jls.lang.AssertionError) {
 21                 this.addFailure(test, e);
 22             } else {
 23                 this.addError(test, e);
 24             }
 25         }
 26         this.endTest(test);
 27     },
 28     startTest : function(test) {
 29         this._runTests += test.countTestCases();
 30     },
 31     endTest : function(test) {
 32     },
 33     addFailure : function(test, e) {
 34         this._failures.push(new jls.jsunit.TestFailure(test, e));
 35     },
 36     addError : function(test, e) {
 37         this._errors.push(new jls.jsunit.TestFailure(test, e));
 38     },
 39     errorCount : function() {
 40 		return this._errors.length;
 41     },
 42     failureCount : function() {
 43 		return this._failures.length;
 44     },
 45     runCount : function() {
 46 		return this._runTests;
 47     },
 48     wasSuccessful : function() {
 49 		return this.errorCount() == 0 && this.failureCount() == 0;
 50     },
 51     toString : function() {
 52 		return '' + this.runCount() + ' test(s): ' + this.errorCount() + ' error(s) and ' + this.failureCount() + ' failure(s)';
 53     },
 54     print : function(ps) {
 55         ps = ps || jls.lang.System.out;
 56         ps.println(this.toString());
 57         for (var i = 0; i < this._errors.length; i++) {
 58             var tf = this._errors[i];
 59             var tfe = tf.thrownException();
 60             ps.println('Test "' + tf.failedTest().getName() + '" in error due to:');
 61 			jls.lang.Exception.wrap(tfe).printStackTrace(ps);
 62         }
 63         for (var i = 0; i < this._failures.length; i++) {
 64             var tf = this._failures[i];
 65             ps.println('Test "' + tf.failedTest().getName() + '" failed due to "' + tf.thrownException().getMessage() + '"');
 66         }
 67     }
 68 });
 69