1if (typeof T === 'undefined') require('../setup'); 2 3T('isFinite, isInteger, isNaN, isNegative, isZero, isDecimal', function () { 4 5 function t(actual) { 6 T.assert(actual); 7 } 8 9 Decimal.config({ 10 precision: 20, 11 rounding: 4, 12 toExpNeg: -7, 13 toExpPos: 21, 14 minE: -9e15, 15 maxE: 9e15 16 }); 17 18 var n = new Decimal(1); 19 20 t(n.isFinite()); 21 t(!n.isNaN()); 22 t(!n.isNegative()); 23 t(!n.isZero()); 24 t(n.isInteger()); 25 t(n.equals(n)); 26 t(n.equals(1)); 27 t(n.equals('1.0')); 28 t(n.equals('1.00')); 29 t(n.equals('1.000')); 30 t(n.equals('1.0000')); 31 t(n.equals('1.00000')); 32 t(n.equals('1.000000')); 33 t(n.equals(new Decimal(1))); 34 t(n.equals('0x1')); 35 t(n.equals('0o1')); 36 t(n.equals('0b1')); 37 t(n.greaterThan(0.99999)); 38 t(!n.greaterThanOrEqualTo(1.1)); 39 t(n.lessThan(1.001)); 40 t(n.lessThanOrEqualTo(2)); 41 t(n.toString() === n.valueOf()); 42 43 n = new Decimal('-0.1'); 44 45 t(n.isFinite()); 46 t(!n.isNaN()); 47 t(n.isNeg()); 48 t(!n.isZero()); 49 t(!n.isInt()); 50 t(!n.equals(0.1)); 51 t(!n.greaterThan(-0.1)); 52 t(n.greaterThanOrEqualTo(-1)); 53 t(n.lessThan(-0.01)); 54 t(!n.lessThanOrEqualTo(-1)); 55 t(n.toString() === n.valueOf()); 56 57 n = new Decimal(Infinity); 58 59 t(!n.isFinite()); 60 t(!n.isNaN()); 61 t(!n.isNegative()); 62 t(!n.isZero()); 63 t(!n.isInteger()); 64 t(n.eq('Infinity')); 65 t(n.eq(1/0)); 66 t(n.gt('9e999')); 67 t(n.gte(Infinity)); 68 t(!n.lt(Infinity)); 69 t(n.lte(Infinity)); 70 t(n.toString() === n.valueOf()); 71 72 n = new Decimal('-Infinity'); 73 74 t(!n.isFinite()); 75 t(!n.isNaN()); 76 t(n.isNeg()); 77 t(!n.isZero()); 78 t(!n.isInt()); 79 t(!n.equals(Infinity)); 80 t(n.equals(-1/0)); 81 t(!n.greaterThan(-Infinity)); 82 t(n.greaterThanOrEqualTo('-Infinity', 8)); 83 t(n.lessThan(0)); 84 t(n.lessThanOrEqualTo(Infinity)); 85 t(n.toString() === n.valueOf()); 86 87 n = new Decimal('0.0000000'); 88 89 t(n.isFinite()); 90 t(!n.isNaN()); 91 t(!n.isNegative()); 92 t(n.isZero()); 93 t(n.isInteger()); 94 t(n.eq(-0)); 95 t(n.gt(-0.000001)); 96 t(!n.gte(0.1)); 97 t(n.lt(0.0001)); 98 t(n.lte(-0)); 99 t(n.toString() === n.valueOf()); 100 101 n = new Decimal(-0); 102 103 t(n.isFinite()); 104 t(!n.isNaN()); 105 t(n.isNeg()); 106 t(n.isZero()); 107 t(n.isInt()); 108 t(n.equals('0.000')); 109 t(n.greaterThan(-1)); 110 t(!n.greaterThanOrEqualTo(0.1)); 111 t(!n.lessThan(0)); 112 t(!n.lessThan(0, 36)); 113 t(n.lessThan(0.1)); 114 t(n.lessThanOrEqualTo(0)); 115 t(n.valueOf() === '-0' && n.toString() === '0'); 116 117 n = new Decimal('NaN'); 118 119 t(!n.isFinite()); 120 t(n.isNaN()); 121 t(!n.isNegative()); 122 t(!n.isZero()); 123 t(!n.isInteger()); 124 t(!n.eq(NaN)); 125 t(!n.eq(Infinity)); 126 t(!n.gt(0)); 127 t(!n.gte(0)); 128 t(!n.lt(1)); 129 t(!n.lte(-0)); 130 t(!n.lte(-1)); 131 t(n.toString() === n.valueOf()); 132 133 n = new Decimal('-1.234e+2'); 134 135 t(n.isFinite()); 136 t(!n.isNaN()); 137 t(n.isNeg()); 138 t(!n.isZero()); 139 t(!n.isInt()); 140 t(n.eq(-123.4)); 141 t(n.gt('-0xff')); 142 t(n.gte('-1.234e+3')); 143 t(n.lt(-123.39999)); 144 t(n.lte('-123.4e+0')); 145 t(n.toString() === n.valueOf()); 146 147 n = new Decimal('5e-200'); 148 149 t(n.isFinite()); 150 t(!n.isNaN()); 151 t(!n.isNegative()); 152 t(!n.isZero()); 153 t(!n.isInteger()); 154 t(n.equals(5e-200)); 155 t(n.greaterThan(5e-201)); 156 t(!n.greaterThanOrEqualTo(1)); 157 t(n.lessThan(6e-200)); 158 t(n.lessThanOrEqualTo(5.1e-200)); 159 t(n.toString() === n.valueOf()); 160 161 n = new Decimal('1'); 162 163 t(n.equals(n)); 164 t(n.equals(n.toString())); 165 t(n.equals(n.toString())); 166 t(n.equals(n.valueOf())); 167 t(n.equals(n.toFixed())); 168 t(n.equals(1)); 169 t(n.equals('1e+0')); 170 t(!n.equals(-1)); 171 t(!n.equals(0.1)); 172 173 t(!new Decimal(NaN).equals(0)); 174 t(!new Decimal(Infinity).equals(0)); 175 t(!new Decimal(0.1).equals(0)); 176 t(!new Decimal(1e9 + 1).equals(1e9)); 177 t(!new Decimal(1e9 - 1).equals(1e9)); 178 t(new Decimal(1e9 + 1).equals(1e9 + 1)); 179 t(new Decimal(1).equals(1)); 180 t(!new Decimal(1).equals(-1)); 181 t(!new Decimal(NaN).equals(NaN)); 182 t(!new Decimal('NaN').equals('NaN')); 183 184 t(!new Decimal(NaN).greaterThan(NaN)); 185 t(!new Decimal(NaN).lessThan(NaN)); 186 t(new Decimal('0xa').lessThanOrEqualTo('0xff')); 187 t(new Decimal('0xb').greaterThanOrEqualTo('0x9')); 188 189 t(!new Decimal(10).greaterThan(10)); 190 t(!new Decimal(10).lessThan(10)); 191 t(!new Decimal(NaN).lessThan(NaN)); 192 t(!new Decimal(Infinity).lessThan(-Infinity)); 193 t(!new Decimal(Infinity).lessThan(Infinity)); 194 t(new Decimal(Infinity).lessThanOrEqualTo(Infinity)); 195 t(!new Decimal(NaN).greaterThanOrEqualTo(NaN)); 196 t(new Decimal(Infinity).greaterThanOrEqualTo(Infinity)); 197 t(new Decimal(Infinity).greaterThanOrEqualTo(-Infinity)); 198 t(!new Decimal(NaN).greaterThanOrEqualTo(-Infinity)); 199 t(new Decimal(-Infinity).greaterThanOrEqualTo(-Infinity)); 200 201 t(!new Decimal(2).greaterThan(10)); 202 t(!new Decimal(10).lessThan(2)); 203 t(new Decimal(255).lessThanOrEqualTo('0xff')); 204 t(new Decimal('0xa').greaterThanOrEqualTo('0x9')); 205 t(!new Decimal(0).lessThanOrEqualTo('NaN')); 206 t(!new Decimal(0).greaterThanOrEqualTo(NaN)); 207 t(!new Decimal(NaN).lessThanOrEqualTo('NaN')); 208 t(!new Decimal(NaN).greaterThanOrEqualTo(NaN)); 209 t(!new Decimal(0).lessThanOrEqualTo(-Infinity)); 210 t(new Decimal(0).greaterThanOrEqualTo(-Infinity)); 211 t(new Decimal(0).lessThanOrEqualTo('Infinity')); 212 t(!new Decimal(0).greaterThanOrEqualTo('Infinity')); 213 t(new Decimal(10).lessThanOrEqualTo(20)); 214 t(!new Decimal(10).greaterThanOrEqualTo(20)); 215 216 t(!new Decimal(1.23001e-2).lessThan(1.23e-2)); 217 t(new Decimal(1.23e-2).lt(1.23001e-2)); 218 t(!new Decimal(1e-2).lessThan(9.999999e-3)); 219 t(new Decimal(9.999999e-3).lt(1e-2)); 220 221 t(!new Decimal(1.23001e+2).lessThan(1.23e+2)); 222 t(new Decimal(1.23e+2).lt(1.23001e+2)); 223 t(new Decimal(9.999999e+2).lessThan(1e+3)); 224 t(!new Decimal(1e+3).lt(9.9999999e+2)); 225 226 t(!new Decimal(1.23001e-2).lessThanOrEqualTo(1.23e-2)); 227 t(new Decimal(1.23e-2).lte(1.23001e-2)); 228 t(!new Decimal(1e-2).lessThanOrEqualTo(9.999999e-3)); 229 t(new Decimal(9.999999e-3).lte(1e-2)); 230 231 t(!new Decimal(1.23001e+2).lessThanOrEqualTo(1.23e+2)); 232 t(new Decimal(1.23e+2).lte(1.23001e+2)); 233 t(new Decimal(9.999999e+2).lessThanOrEqualTo(1e+3)); 234 t(!new Decimal(1e+3).lte(9.9999999e+2)); 235 236 t(new Decimal(1.23001e-2).greaterThan(1.23e-2)); 237 t(!new Decimal(1.23e-2).gt(1.23001e-2)); 238 t(new Decimal(1e-2).greaterThan(9.999999e-3)); 239 t(!new Decimal(9.999999e-3).gt(1e-2)); 240 241 t(new Decimal(1.23001e+2).greaterThan(1.23e+2)); 242 t(!new Decimal(1.23e+2).gt(1.23001e+2)); 243 t(!new Decimal(9.999999e+2).greaterThan(1e+3)); 244 t(new Decimal(1e+3).gt(9.9999999e+2)); 245 246 t(new Decimal(1.23001e-2).greaterThanOrEqualTo(1.23e-2)); 247 t(!new Decimal(1.23e-2).gte(1.23001e-2)); 248 t(new Decimal(1e-2).greaterThanOrEqualTo(9.999999e-3)); 249 t(!new Decimal(9.999999e-3).gte(1e-2)); 250 251 t(new Decimal(1.23001e+2).greaterThanOrEqualTo(1.23e+2)); 252 t(!new Decimal(1.23e+2).gte(1.23001e+2)); 253 t(!new Decimal(9.999999e+2).greaterThanOrEqualTo(1e+3)); 254 t(new Decimal(1e+3).gte(9.9999999e+2)); 255 256 t(!new Decimal('1.0000000000000000000001').isInteger()); 257 t(!new Decimal('0.999999999999999999999').isInteger()); 258 t(new Decimal('4e4').isInteger()); 259 t(new Decimal('-4e4').isInteger()); 260 261 // Decimal.isDecimal 262 263 t(Decimal.isDecimal(new Decimal(1))); 264 t(Decimal.isDecimal(new Decimal('-2.3'))); 265 t(Decimal.isDecimal(new Decimal(NaN))); 266 t(Decimal.isDecimal(new Decimal('Infinity'))); 267 268 t(!Decimal.isDecimal()); 269 t(!Decimal.isDecimal(0)); 270 t(!Decimal.isDecimal(1)); 271 t(!Decimal.isDecimal('-2.3')); 272 t(!Decimal.isDecimal(NaN)); 273 t(!Decimal.isDecimal(Infinity)); 274 t(!Decimal.isDecimal(undefined)); 275 t(!Decimal.isDecimal({})); 276 t(!Decimal.isDecimal({isDecimal: true})); 277 t(!Decimal.isDecimal(new Number(4))); 278}); 279