| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- <!doctype html>
- <html lang="en">
- <head>
- <title>Code coverage report for tar/lib/large-numbers.js</title>
- <meta charset="utf-8" />
- <link rel="stylesheet" href="../../prettify.css" />
- <link rel="stylesheet" href="../../base.css" />
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <style type='text/css'>
- .coverage-summary .sorter {
- background-image: url(../../sort-arrow-sprite.png);
- }
- </style>
- </head>
- <body>
- <div class='wrapper'>
- <div class='pad1'>
- <h1>
- <a href="../../index.html">All files</a> / <a href="index.html">tar/lib</a> large-numbers.js
- </h1>
- <div class='clearfix'>
- <div class='fl pad1y space-right2'>
- <span class="strong">100% </span>
- <span class="quiet">Statements</span>
- <span class='fraction'>59/59</span>
- </div>
- <div class='fl pad1y space-right2'>
- <span class="strong">100% </span>
- <span class="quiet">Branches</span>
- <span class='fraction'>20/20</span>
- </div>
- <div class='fl pad1y space-right2'>
- <span class="strong">100% </span>
- <span class="quiet">Functions</span>
- <span class='fraction'>8/8</span>
- </div>
- <div class='fl pad1y space-right2'>
- <span class="strong">100% </span>
- <span class="quiet">Lines</span>
- <span class='fraction'>57/57</span>
- </div>
- </div>
- </div>
- <div class='status-line high'></div>
- <pre><table class="coverage">
- <tr><td class="line-count quiet">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</td><td class="line-coverage quiet"><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-neutral"> </span>
- <span class="cline-any cline-yes">14x</span>
- <span class="cline-any cline-yes">17x</span>
- <span class="cline-any cline-yes">17x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">11x</span>
- <span class="cline-any cline-yes">17x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">14x</span>
- <span class="cline-any cline-yes">11x</span>
- <span class="cline-any cline-yes">11x</span>
- <span class="cline-any cline-yes">86x</span>
- <span class="cline-any cline-yes">31x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">55x</span>
- <span class="cline-any cline-yes">55x</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">14x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">60x</span>
- <span class="cline-any cline-yes">42x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">18x</span>
- <span class="cline-any cline-yes">18x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">60x</span>
- <span class="cline-any cline-yes">48x</span>
- <span class="cline-any cline-yes">12x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</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">14x</span>
- <span class="cline-any cline-yes">47x</span>
- <span class="cline-any cline-yes">47x</span>
- <span class="cline-any cline-yes">47x</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">14x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">60x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">60x</span>
- <span class="cline-any cline-yes">48x</span>
- <span class="cline-any cline-yes">12x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">60x</span>
- <span class="cline-any cline-yes">12x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">14x</span>
- <span class="cline-any cline-yes">41x</span>
- <span class="cline-any cline-yes">41x</span>
- <span class="cline-any cline-yes">41x</span>
- <span class="cline-any cline-yes">266x</span>
- <span class="cline-any cline-yes">266x</span>
- <span class="cline-any cline-yes">161x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">41x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">96x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">14x</span>
- <span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">'use strict'
- // Tar can encode large and negative numbers using a leading byte of
- // 0xff for negative, and 0x80 for positive. The trailing byte in the
- // section will always be 0x20, or in some implementations 0x00.
- // this module encodes and decodes these things.
-
- const encode = exports.encode = (num, buf) => {
- buf[buf.length - 1] = 0x20
- if (num < 0)
- encodeNegative(num, buf)
- else
- encodePositive(num, buf)
- return buf
- }
-
- const encodePositive = (num, buf) => {
- buf[0] = 0x80
- for (var i = buf.length - 2; i > 0; i--) {
- if (num === 0)
- buf[i] = 0
- else {
- buf[i] = num % 0x100
- num = Math.floor(num / 0x100)
- }
- }
- }
-
- const encodeNegative = (num, buf) => {
- buf[0] = 0xff
- var flipped = false
- num = num * -1
- for (var i = buf.length - 2; i > 0; i--) {
- var byte
- if (num === 0)
- byte = 0
- else {
- byte = num % 0x100
- num = Math.floor(num / 0x100)
- }
- if (flipped)
- buf[i] = onesComp(byte)
- else if (byte === 0)
- buf[i] = 0
- else {
- flipped = true
- buf[i] = twosComp(byte)
- }
- }
- }
-
- const parse = exports.parse = (buf) => {
- var post = buf[buf.length - 1]
- var pre = buf[0]
- return pre === 0x80 ? pos(buf.slice(1, buf.length - 1))
- : twos(buf.slice(1, buf.length - 1))
- }
-
- const twos = (buf) => {
- var len = buf.length
- var sum = 0
- var flipped = false
- for (var i = len - 1; i > -1; i--) {
- var byte = buf[i]
- var f
- if (flipped)
- f = onesComp(byte)
- else if (byte === 0)
- f = byte
- else {
- flipped = true
- f = twosComp(byte)
- }
- if (f !== 0)
- sum += f * Math.pow(256, len - i - 1)
- }
- return sum * -1
- }
-
- const pos = (buf) => {
- var len = buf.length
- var sum = 0
- for (var i = len - 1; i > -1; i--) {
- var byte = buf[i]
- if (byte !== 0)
- sum += byte * Math.pow(256, len - i - 1)
- }
- return sum
- }
-
- const onesComp = byte => (0xff ^ byte) & 0xff
-
- const twosComp = byte => ((0xff ^ byte) + 1) & 0xff
- </pre></td></tr>
- </table></pre>
- <div class='push'></div><!-- for sticky footer -->
- </div><!-- /wrapper -->
- <div class='footer quiet pad2 space-top1 center small'>
- Code coverage
- generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Mon Nov 20 2017 16:00:38 GMT-0800 (PST)
- </div>
- </div>
- <script src="../../prettify.js"></script>
- <script>
- window.onload = function () {
- if (typeof prettyPrint === 'function') {
- prettyPrint();
- }
- };
- </script>
- <script src="../../sorter.js"></script>
- </body>
- </html>
|