ceil.js
1 var count = (function ceil(BigNumber) { 2 var start = +new Date(), 3 log, 4 error, 5 undefined, 6 passed = 0, 7 total = 0; 8 9 if (typeof window === 'undefined') { 10 log = console.log; 11 error = console.error; 12 } else { 13 log = function (str) { document.body.innerHTML += str.replace('\n', '<br>') }; 14 error = function (str) { document.body.innerHTML += '<div style="color: red">' + 15 str.replace('\n', '<br>') + '</div>' }; 16 } 17 18 if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); 19 20 function assert(expected, actual) { 21 total++; 22 if (expected !== actual) { 23 error('\n Test number: ' + total + ' failed'); 24 error(' Expected: ' + expected); 25 error(' Actual: ' + actual); 26 //process.exit(); 27 } 28 else { 29 passed++; 30 //log('\n Expected and actual: ' + actual); 31 } 32 } 33 34 function T(expected, value) { 35 assert(String(expected), new BigNumber(String(value)).ceil().toString()); 36 } 37 38 log('\n Testing ceil...'); 39 40 BigNumber.config({ 41 DECIMAL_PLACES: 20, 42 ROUNDING_MODE: 4, 43 ERRORS: true, 44 RANGE: 1E9, 45 EXPONENTIAL_AT: 1E9 46 }); 47 48 T('-2075364', '-2075364.364286541923'); 49 T('60593539780450631', '60593539780450631'); 50 T('65937898671515', '65937898671515'); 51 T('-39719494751819198566798', '-39719494751819198566798.578'); 52 T('92627382695288166557', '92627382695288166556.8683774524284866028260448205069'); 53 T('-881574', '-881574'); 54 T('-3633239209', '-3633239209.654526163275621746013315304191073405508491056'); 55 T('-23970335459820625362', '-23970335459820625362'); 56 T('131869457416154038', '131869457416154038'); 57 T('-2685', '-2685'); 58 T('-4542227860', '-4542227860.9511298545226'); 59 T('2416872282', '2416872281.963955669484225137349193306323379254936827'); 60 T('-757684868752087594264588207655', '-757684868752087594264588207655.27838048392835556'); 61 T('-438798503526', '-438798503526.2317623894721299587561697'); 62 T('801625782231888715214665', '801625782231888715214665'); 63 T('-91881984778675238', '-91881984778675238'); 64 T('327765350218284325239839632047', '327765350218284325239839632046.91682741746683081459605386'); 65 T('-7469045007691432294', '-7469045007691432294.362757245'); 66 T('8365540212937142194319515218790', '8365540212937142194319515218789.4106658678537421977827'); 67 T('-14108', '-14108.495051214515'); 68 T('49104502', '49104501.10055989379655329194309526150310568683504206945625'); 69 T('131370407', '131370406.330005158136313262837556068534122953'); 70 T('3017', '3017'); 71 T('-689', '-689.6944252229740521128820354989299283'); 72 T('73441822179', '73441822178.572653'); 73 T('-2329', '-2329.42655772223486531483602927572548264457'); 74 T('-834103872107533086', '-834103872107533086'); 75 T('-1501493189970435', '-1501493189970435.74866616700317'); 76 T('70592', '70591.2244675522123484658978887'); 77 T('4446128540401735118', '4446128540401735117.435836700611264749985822486641350492901'); 78 T('-597273', '-597273'); 79 T('729117', '729117'); 80 T('504', '504'); 81 T('4803729546823170064608098091', '4803729546823170064608098091'); 82 T('24147026285420507467578', '24147026285420507467578'); 83 T('-6581532150677269472829', '-6581532150677269472829.38194951340848938896000325718062365494'); 84 T('-131279182164804751', '-131279182164804751.430589952021038264'); 85 T('2949426983040960', '2949426983040959.8911208825380208568451907'); 86 T('25167', '25166.125888418871654557352055849116604612621573251770362'); 87 T('4560569286496', '4560569286495.98300685103599898554605198'); 88 T('14', '13.763105480576616251068323541559825687'); 89 T('176037174185746614410406167888', '176037174185746614410406167887.42317518'); 90 T('9050999219307', '9050999219306.7846946346757664893036971777'); 91 T('39900924', '39900924'); 92 T('115911043168452445', '115911043168452445'); 93 T('20962819101135667464733349384', '20962819101135667464733349383.8959025798517496777183'); 94 T('4125789711001606948192', '4125789711001606948191.4707575965791242737346836'); 95 T('-6935501', '-6935501.294727166142750626019282'); 96 T('-1', '-1.518418076611593764852321765899'); 97 T('-35416', '-35416'); 98 T('6912783515683955988122411164549', '6912783515683955988122411164548.393'); 99 T('658', '657.0353902852'); 100 T('1', '0.0009'); 101 T('1', '0.00000000000000000000000017921822306362413915'); 102 T('1483059355427939255846407888', '1483059355427939255846407887.011361095342689876'); 103 T('7722', '7722'); 104 T('1', '0.00000005'); 105 T('8551283060956479353', '8551283060956479352.5707396'); 106 T('1', '0.000000000000000000000000019904267'); 107 T('321978830777554620127500540', '321978830777554620127500539.339278568133088682532238002577'); 108 T('2074', '2073.532654804291079327244387978249477171032485250998396'); 109 T('677676305592', '677676305591.2'); 110 T('1', '0.0000000000006'); 111 T('39181479479778357', '39181479479778357'); 112 T('1', '0.00000000000000000087964700066672916651'); 113 T('896', '896'); 114 T('115083055948552475', '115083055948552475'); 115 T('9105942082143427451223', '9105942082143427451223'); 116 T('1', '0.0000000000000009'); 117 T('1', '0.00000000000000000000004'); 118 T('1', '0.000250427721966583680168028884692015623739'); 119 T('1', '0.000000000001585613219016120158734661293405081934'); 120 T('1', '0.00009'); 121 T('1', '0.000000090358252973411013592234'); 122 T('276312604693909858428', '276312604693909858427.21965306055697011390137926559'); 123 T('1', '0.0000252'); 124 125 T(2, new BigNumber('1.000000000000000000000000000000000000001').ceil(NaN)); 126 127 // ---------------------------------------------------------------- v8 start 128 129 T(0, 0); 130 T(0, '0.000'); 131 T(0, -0); 132 T(Infinity, Infinity); 133 T(-Infinity, -Infinity); 134 T(NaN, NaN); 135 T(NaN, 'NaN'); 136 137 T(1, 0.1); 138 T(1, 0.49999999999999994); 139 T(1, 0.5); 140 T(1, 0.7); 141 T(0, -0.1); 142 T(0, -0.49999999999999994); 143 T(0, -0.5); 144 T(0, -0.7); 145 T(1, 1); 146 T(2, 1.1); 147 T(2, 1.5); 148 T(2, 1.7); 149 T(-1, -1); 150 T(-1, -1.1); 151 T(-1, -1.5); 152 T(-1, -1.7); 153 154 BigNumber.config({EXPONENTIAL_AT: 100}); 155 156 T(0, -1e-308); 157 T(-1e308, -1e308); 158 T('2.1e+308', '2.1e308'); 159 T(0, '-1e-999'); 160 T(1, '1e-999'); 161 162 T(1, Number.MIN_VALUE); 163 T(0, -Number.MIN_VALUE); 164 T(Number.MAX_VALUE, Number.MAX_VALUE); 165 T(-Number.MAX_VALUE, -Number.MAX_VALUE); 166 T(Infinity, Infinity); 167 T(-Infinity, -Infinity); 168 169 var two_30 = 1 << 30; 170 171 T(two_30, two_30); 172 T(two_30 + 1, two_30 + 0.1); 173 T(two_30 + 1, two_30 + 0.5); 174 T(two_30 + 1, two_30 + 0.7); 175 176 T(two_30 - 1, two_30 - 1); 177 T(two_30, two_30 - 1 + 0.1); 178 T(two_30, two_30 - 1 + 0.5); 179 T(two_30, two_30 - 1 + 0.7); 180 181 T(-two_30, -two_30); 182 T(-two_30 + 1, -two_30 + 0.1); 183 T(-two_30 + 1, -two_30 + 0.5); 184 T(-two_30 + 1, -two_30 + 0.7); 185 186 T(-two_30 + 1, -two_30 + 1); 187 T(-two_30 + 2, -two_30 + 1 + 0.1); 188 T(-two_30 + 2, -two_30 + 1 + 0.5); 189 T(-two_30 + 2, -two_30 + 1 + 0.7); 190 191 var two_52 = (1 << 30) * (1 << 22); 192 193 T(two_52, two_52); 194 T(two_52 + 1, '4503599627370496.1'); 195 T(two_52 + 1, '4503599627370496.5'); 196 T(two_52 + 1, '4503599627370496.7'); 197 198 T(-two_52, -two_52); 199 T(-two_52 + 1, '-4503599627370495.1'); 200 T(-two_52 + 1, '-4503599627370495.5'); 201 T(-two_52 + 1, '-4503599627370495.7'); 202 203 // ------------------------------------------------------------------ v8 end 204 205 log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); 206 return [passed, total]; 207 })(this.BigNumber); 208 if (typeof module !== 'undefined' && module.exports) module.exports = count;