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