/ test / ceil.js
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;