| <!doctype html> |
| <html lang="en"> |
| <head> |
| <title>Code coverage report for lib/writable_streambuffer.js</title> |
| <meta charset="utf-8"> |
| <link rel="stylesheet" href="../prettify.css"> |
| <link rel="stylesheet" href="../base.css"> |
| <style type='text/css'> |
| div.coverage-summary .sorter { |
| background-image: url(../sort-arrow-sprite.png); |
| } |
| </style> |
| </head> |
| <body> |
| <div class="header high"> |
| <h1>Code coverage report for <span class="entity">lib/writable_streambuffer.js</span></h1> |
| <h2> |
| Statements: <span class="metric">96.77% <small>(60 / 62)</small></span> |
| Branches: <span class="metric">90.63% <small>(29 / 32)</small></span> |
| Functions: <span class="metric">100% <small>(9 / 9)</small></span> |
| Lines: <span class="metric">98.25% <small>(56 / 57)</small></span> |
| Ignored: <span class="metric"><span class="ignore-none">none</span></span> |
| </h2> |
| <div class="path"><a href="../index.html">All files</a> » <a href="index.html">lib/</a> » writable_streambuffer.js</div> |
| </div> |
| <div class="body"> |
| <pre><table class="coverage"> |
| <tr><td class="line-count">1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
| 38 |
| 39 |
| 40 |
| 41 |
| 42 |
| 43 |
| 44 |
| 45 |
| 46 |
| 47 |
| 48 |
| 49 |
| 50 |
| 51 |
| 52 |
| 53 |
| 54 |
| 55 |
| 56 |
| 57 |
| 58 |
| 59 |
| 60 |
| 61 |
| 62 |
| 63 |
| 64 |
| 65 |
| 66 |
| 67 |
| 68 |
| 69 |
| 70 |
| 71 |
| 72 |
| 73 |
| 74 |
| 75 |
| 76 |
| 77 |
| 78 |
| 79 |
| 80 |
| 81 |
| 82 |
| 83 |
| 84 |
| 85 |
| 86 |
| 87 |
| 88 |
| 89 |
| 90 |
| 91 |
| 92 |
| 93 |
| 94 |
| 95 |
| 96 |
| 97 |
| 98</td><td class="line-coverage"><span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">5</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">5</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-no"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">8</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">7</span> |
| <span class="cline-any cline-yes">7</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">7</span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">7</span> |
| <span class="cline-any cline-yes">7</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">11</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-yes">2</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">8</span> |
| <span class="cline-any cline-yes">8</span> |
| <span class="cline-any cline-yes">8</span> |
| <span class="cline-any cline-yes">8</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">10</span> |
| <span class="cline-any cline-yes">4</span> |
| <span class="cline-any cline-yes">4</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1</span> |
| <span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">var util = require("util"), |
| stream = require("stream"), |
| constants = require("./constants"); |
| |
| // TODO: clear up specs on returning false from a write and emitting a drain event. |
| // Does this mean if I return false from a write, I should ignore any write requests between that false return and the drain event? |
| var WritableStreamBuffer = module.exports = function(opts) { |
| var that = this; |
| |
| stream.Stream.call(this); |
| |
| opts = opts || {}; |
| var initialSize = opts.initialSize || constants.DEFAULT_INITIAL_SIZE; |
| var incrementAmount = opts.incrementAmount || constants.DEFAULT_INCREMENT_AMOUNT; |
| |
| var buffer = new Buffer(initialSize); |
| var size = 0; |
| |
| this.writable = true; |
| this.readable = false; |
| |
| this.size = function() { |
| return size; |
| }; |
| |
| this.maxSize = function() { |
| return buffer.length; |
| }; |
| |
| this.getContents = function(length) { |
| if(!size) return false; |
| |
| var data = new Buffer(Math.min(length || size, size)); |
| buffer.copy(data, 0, 0, data.length); |
| |
| <span class="missing-if-branch" title="if path not taken" >I</span>if(data.length < size) |
| <span class="cstat-no" title="statement not covered" > buffer.copy(buffer, 0, data.length);</span> |
| |
| size -= data.length; |
| |
| return data; |
| }; |
| |
| this.getContentsAsString = function(encoding, length) { |
| if(!size) return false; |
| |
| var data = buffer.toString(encoding || "utf8", 0, Math.min(length || size, size)); |
| var dataLength = Buffer.byteLength(data); |
| |
| if(dataLength < size) |
| buffer.copy(buffer, 0, dataLength); |
| |
| size -= dataLength; |
| return data; |
| }; |
| |
| var increaseBufferIfNecessary = function(incomingDataSize) { |
| if((buffer.length - size) < incomingDataSize) { |
| var factor = Math.ceil((incomingDataSize - (buffer.length - size)) / incrementAmount); |
| |
| var newBuffer = new Buffer(buffer.length + (incrementAmount * factor)); |
| buffer.copy(newBuffer, 0, 0, size); |
| buffer = newBuffer; |
| } |
| }; |
| |
| this.write = function(data, encoding, callback) { |
| if(!that.writable) return; |
| |
| if(Buffer.isBuffer(data)) { |
| increaseBufferIfNecessary(data.length); |
| data.copy(buffer, size, 0); |
| size += data.length; |
| } |
| else { |
| data = data + ""; |
| increaseBufferIfNecessary(Buffer.byteLength(data)); |
| buffer.write(data, size, encoding || "utf8"); |
| size += Buffer.byteLength(data); |
| } |
| |
| <span class="missing-if-branch" title="if path not taken" >I</span>if(typeof callback === "function") { <span class="cstat-no" title="statement not covered" >callback() ;}</span> |
| }; |
| |
| this.end = function() { |
| var args = Array.prototype.slice.apply(arguments); |
| <span class="missing-if-branch" title="else path not taken" >E</span>if(args.length) that.write.apply(that, args); |
| that.emit('finish'); |
| that.destroy(); |
| }; |
| |
| this.destroySoon = this.destroy = function() { |
| that.writable = false; |
| that.emit("close"); |
| }; |
| }; |
| util.inherits(WritableStreamBuffer, stream.Stream); |
| </pre></td></tr> |
| </table></pre> |
| |
| </div> |
| <div class="footer"> |
| <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Wed Jul 01 2015 04:16:19 GMT+0000 (UTC)</div> |
| </div> |
| <script src="../prettify.js"></script> |
| <script> |
| window.onload = function () { |
| if (typeof prettyPrint === 'function') { |
| prettyPrint(); |
| } |
| }; |
| </script> |
| <script src="../sorter.js"></script> |
| </body> |
| </html> |