UNPKG

yhtml5-test

Version:

A test framework for front-end projects

276 lines (275 loc) 9.12 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for src/utils/formatNumber.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">src/utils</a> formatNumber.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">81.82% </span> <span class="quiet">Statements</span> <span class='fraction'>27/33</span> </div> <div class='fl pad1y space-right2'> <span class="strong">81.25% </span> <span class="quiet">Branches</span> <span class='fraction'>26/32</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Functions</span> <span class='fraction'>3/3</span> </div> <div class='fl pad1y space-right2'> <span class="strong">81.82% </span> <span class="quiet">Lines</span> <span class='fraction'>27/33</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</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">6x</span> <span class="cline-any cline-yes">6x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">5x</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">5x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">3x</span> <span class="cline-any cline-yes">3x</span> <span class="cline-any cline-yes">3x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">4x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/** * author: yhtml5 * params description: * @param {number} number 要格式化的数字 * @param {function} beforeTransform 转换前处理, 例: 分=&gt;元 * @param {number} decimals 保留几位小数, 默认 0 * @param {number} util 多少位开启换单位, 默认 万 * @param {string} roundtag 舍入参数, [ceil: 向上取整, floor: 向下取整, round: 四舍五入], 默认 round * @param {string} decPoint 小数点符号, 默认 '.' * @param {string} thousandsSep 千分位符号, 默认 无 * */ &nbsp; function formatNumber(values) { const { decimals = 0, util, decPoint = '.', thousandsSep, roundtag = 'round', beforeTransform } = values || {} if (Object.prototype.toString.call(decimals) !== '[object Number]') { throw `formatNumber\'s parameter decimals must be a Number, but get ${decimals}` <span class="cstat-no" title="statement not covered" > return</span> } <span class="missing-if-branch" title="if path not taken" >I</span>if (!(roundtag === 'ceil' || roundtag === 'floor' || roundtag === 'round')) { <span class="cstat-no" title="statement not covered" > throw `formatNumber\'s parameter roundtag can only be one of the [ceil,floor,round] or be Omitted, but get ${roundtag}`</span> <span class="cstat-no" title="statement not covered" > return</span> } if (Object.prototype.toString.call(beforeTransform) === '[object Function]') { try { beforeTransform(100) } catch (error) { <span class="cstat-no" title="statement not covered" > throw `the function beforeTransform has error \n ${error}`</span> } } else if (beforeTransform) { throw `formatNumber\'s parameter beforeTransform must be a function, but get ${beforeTransform}` } &nbsp; return (number) =&gt; { if (beforeTransform) { number = beforeTransform(number) } &nbsp; // let number = JSON.parse(JSON.stringify(value)) number = (number + '').replace(/[^0-9+-Ee.]/g, '') &nbsp; let n = !isFinite(+number) ? <span class="branch-0 cbranch-no" title="branch not covered" >0 </span>: +number, prec = !isFinite(+decimals) ? <span class="branch-0 cbranch-no" title="branch not covered" >0 </span>: Math.abs(decimals), s = '', toFixedFix = function (n, prec) { const k = Math.pow(10, prec); console.log(); return '' + parseFloat(Math[roundtag](parseFloat((n * k).toFixed(prec * 2))).toFixed(prec * 2)) / k; }; s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); &nbsp; if (thousandsSep) { const re = /(-?\d+)(\d{3})/; while (re.test(s[0])) { s[0] = s[0].replace(re, "$1" + thousandsSep + "$2"); } } &nbsp; <span class="missing-if-branch" title="if path not taken" >I</span>if ((s[1] || '').length &lt; prec) { <span class="cstat-no" title="statement not covered" > s[1] = s[1] || '';</span> <span class="cstat-no" title="statement not covered" > s[1] += new Array(prec - s[1].length + 1).join('0');</span> } &nbsp; return s.join(decPoint); } } &nbsp; export { formatNumber } &nbsp;</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 Oct 23 2017 11:35:34 GMT+0800 (CST) </div> </div> <script src="../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../sorter.js"></script> </body> </html>