1 /** 2 * Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults 3 * 4 * @constructor 5 */ 6 jasmine.NestedResults = function() { 7 /** 8 * The total count of results 9 */ 10 this.totalCount = 0; 11 /** 12 * Number of passed results 13 */ 14 this.passedCount = 0; 15 /** 16 * Number of failed results 17 */ 18 this.failedCount = 0; 19 /** 20 * Was this suite/spec skipped? 21 */ 22 this.skipped = false; 23 /** 24 * @ignore 25 */ 26 this.items_ = []; 27 }; 28 29 /** 30 * Roll up the result counts. 31 * 32 * @param result 33 */ 34 jasmine.NestedResults.prototype.rollupCounts = function(result) { 35 this.totalCount += result.totalCount; 36 this.passedCount += result.passedCount; 37 this.failedCount += result.failedCount; 38 }; 39 40 /** 41 * Tracks a result's message. 42 * @param message 43 */ 44 jasmine.NestedResults.prototype.log = function(message) { 45 this.items_.push(new jasmine.MessageResult(message)); 46 }; 47 48 /** 49 * Getter for the results: message & results. 50 */ 51 jasmine.NestedResults.prototype.getItems = function() { 52 return this.items_; 53 }; 54 55 /** 56 * Adds a result, tracking counts (total, passed, & failed) 57 * @param {jasmine.ExpectationResult|jasmine.NestedResults} result 58 */ 59 jasmine.NestedResults.prototype.addResult = function(result) { 60 if (result.type != 'MessageResult') { 61 if (result.items_) { 62 this.rollupCounts(result); 63 } else { 64 this.totalCount++; 65 if (result.passed()) { 66 this.passedCount++; 67 } else { 68 this.failedCount++; 69 } 70 } 71 } 72 this.items_.push(result); 73 }; 74 75 /** 76 * @returns {Boolean} True if <b>everything</b> below passed 77 */ 78 jasmine.NestedResults.prototype.passed = function() { 79 return this.passedCount === this.totalCount; 80 }; 81