diff options
Diffstat (limited to 'jstests/decimal/decimal128_test1.js')
-rw-r--r-- | jstests/decimal/decimal128_test1.js | 333 |
1 files changed, 155 insertions, 178 deletions
diff --git a/jstests/decimal/decimal128_test1.js b/jstests/decimal/decimal128_test1.js index 2febf2bf125..6cf083341e4 100644 --- a/jstests/decimal/decimal128_test1.js +++ b/jstests/decimal/decimal128_test1.js @@ -3,184 +3,161 @@ */ (function() { - "use strict"; +"use strict"; - var testData = [ - {"description": "Special - Canonical NaN", "input": "NaN"}, - {"description": "Special - Negative NaN", "input": "NaN", "lossy": true}, - { - "description": "Special - Negative NaN", - "expected": "NaN", - "input": "-NaN", - "lossy": true - }, - {"description": "Special - Canonical SNaN", "input": "NaN", "lossy": true}, - {"description": "Special - Negative SNaN", "input": "NaN", "lossy": true}, - {"description": "Special - NaN with a payload", "input": "NaN", "lossy": true}, - {"description": "Special - Canonical Positive Infinity", "input": "Infinity"}, - {"description": "Special - Canonical Negative Infinity", "input": "-Infinity"}, - { - "description": "Special - Invalid representation treated as 0", - "input": "0", - "lossy": true - }, - { - "description": "Special - Invalid representation treated as -0", - "input": "-0", - "lossy": true - }, - { - "description": "Special - Invalid representation treated as 0E3", - "input": "0E+3", - "lossy": true - }, - { - "description": "Regular - Adjusted Exponent Limit", - "input": "0.000001234567890123456789012345678901234" - }, - {"description": "Regular - Smallest", "input": "0.001234"}, - {"description": "Regular - Smallest with Trailing Zeros", "input": "0.00123400000"}, - {"description": "Regular - 0.1", "input": "0.1"}, - { - "description": "Regular - 0.1234567890123456789012345678901234", - "input": "0.1234567890123456789012345678901234" - }, - {"description": "Regular - 0", "input": "0"}, - {"description": "Regular - -0", "input": "-0"}, - {"description": "Regular - -0.0", "input": "-0.0"}, - {"description": "Regular - 2", "input": "2"}, - {"description": "Regular - 2.000", "input": "2.000"}, - {"description": "Regular - Largest", "input": "1234567890123456789012345678901234"}, - { - "description": "Scientific - Tiniest", - "input": "9.999999999999999999999999999999999E-6143" - }, - {"description": "Scientific - Tiny", "input": "1E-6176"}, - {"description": "Scientific - Negative Tiny", "input": "-1E-6176"}, - { - "description": "Scientific - Adjusted Exponent Limit", - "input": "1.234567890123456789012345678901234E-7" - }, - {"description": "Scientific - Fractional", "input": "-1.00E-8"}, - {"description": "Scientific - 0 with Exponent", "input": "0E+6000"}, - {"description": "Scientific - 0 with Negative Exponent", "input": "0E-611"}, - {"description": "Scientific - No Decimal with Signed Exponent", "input": "1E+3"}, - {"description": "Scientific - Trailing Zero", "input": "1.050E+4"}, - {"description": "Scientific - With Decimal", "input": "1.05E+3"}, - {"description": "Scientific - Full", "input": "5192296858534827628530496329220095"}, - {"description": "Scientific - Large", "input": "1.000000000000000000000000000000000E+6144"}, - { - "description": "Scientific - Largest", - "input": "9.999999999999999999999999999999999E+6144" - }, - { - "description": "Non-Canonical Parsing - Exponent Normalization", - "input": "-100E-10", - "expected": "-1.00E-8" - }, - { - "description": "Non-Canonical Parsing - Unsigned Positive Exponent", - "input": "1E3", - "expected": "1E+3" - }, - { - "description": "Non-Canonical Parsing - Lowercase Exponent Identifier", - "input": "1e+3", - "expected": "1E+3" - }, - { - "description": "Non-Canonical Parsing - Long Significand with Exponent", - "input": "12345689012345789012345E+12", - "expected": "1.2345689012345789012345E+34" - }, - { - "description": "Non-Canonical Parsing - Positive Sign", - "input": "+1234567890123456789012345678901234", - "expected": "1234567890123456789012345678901234" - }, - { - "description": "Non-Canonical Parsing - Long Decimal String", - "input": - ".0000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "0000000000000000000000000000000000000001", - "expected": "1E-999" - }, - {"description": "Non-Canonical Parsing - nan", "input": "nan", "expected": "NaN"}, - {"description": "Non-Canonical Parsing - nAn", "input": "nAn", "expected": "NaN"}, - { - "description": "Non-Canonical Parsing - +infinity", - "input": "+infinity", - "expected": "Infinity" - }, - { - "description": "Non-Canonical Parsing - infinity", - "input": "infinity", - "expected": "Infinity" - }, - { - "description": "Non-Canonical Parsing - infiniTY", - "input": "infiniTY", - "expected": "Infinity" - }, - {"description": "Non-Canonical Parsing - inf", "input": "inf", "expected": "Infinity"}, - {"description": "Non-Canonical Parsing - inF", "input": "inF", "expected": "Infinity"}, - { - "description": "Non-Canonical Parsing - -infinity", - "input": "-infinity", - "expected": "-Infinity" - }, - { - "description": "Non-Canonical Parsing - -infiniTy", - "input": "-infiniTy", - "expected": "-Infinity" - }, - { - "description": "Non-Canonical Parsing - -Inf", - "input": "-Infinity", - "expected": "-Infinity" - }, - {"description": "Non-Canonical Parsing - -inf", "input": "-inf", "expected": "-Infinity"}, - {"description": "Non-Canonical Parsing - -inF", "input": "-inF", "expected": "-Infinity"}, - {"description": "Rounded Subnormal number", "input": "10E-6177", "expected": "1E-6176"}, - {"description": "Clamped", "input": "1E6112", "expected": "1.0E+6112"}, - { - "description": "Exact rounding", - "input": - "100000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "0000000000000000000000000000", - "expected": "1.000000000000000000000000000000000E+999" - } - ]; +var testData = [ + {"description": "Special - Canonical NaN", "input": "NaN"}, + {"description": "Special - Negative NaN", "input": "NaN", "lossy": true}, + {"description": "Special - Negative NaN", "expected": "NaN", "input": "-NaN", "lossy": true}, + {"description": "Special - Canonical SNaN", "input": "NaN", "lossy": true}, + {"description": "Special - Negative SNaN", "input": "NaN", "lossy": true}, + {"description": "Special - NaN with a payload", "input": "NaN", "lossy": true}, + {"description": "Special - Canonical Positive Infinity", "input": "Infinity"}, + {"description": "Special - Canonical Negative Infinity", "input": "-Infinity"}, + {"description": "Special - Invalid representation treated as 0", "input": "0", "lossy": true}, + {"description": "Special - Invalid representation treated as -0", "input": "-0", "lossy": true}, + { + "description": "Special - Invalid representation treated as 0E3", + "input": "0E+3", + "lossy": true + }, + { + "description": "Regular - Adjusted Exponent Limit", + "input": "0.000001234567890123456789012345678901234" + }, + {"description": "Regular - Smallest", "input": "0.001234"}, + {"description": "Regular - Smallest with Trailing Zeros", "input": "0.00123400000"}, + {"description": "Regular - 0.1", "input": "0.1"}, + { + "description": "Regular - 0.1234567890123456789012345678901234", + "input": "0.1234567890123456789012345678901234" + }, + {"description": "Regular - 0", "input": "0"}, + {"description": "Regular - -0", "input": "-0"}, + {"description": "Regular - -0.0", "input": "-0.0"}, + {"description": "Regular - 2", "input": "2"}, + {"description": "Regular - 2.000", "input": "2.000"}, + {"description": "Regular - Largest", "input": "1234567890123456789012345678901234"}, + {"description": "Scientific - Tiniest", "input": "9.999999999999999999999999999999999E-6143"}, + {"description": "Scientific - Tiny", "input": "1E-6176"}, + {"description": "Scientific - Negative Tiny", "input": "-1E-6176"}, + { + "description": "Scientific - Adjusted Exponent Limit", + "input": "1.234567890123456789012345678901234E-7" + }, + {"description": "Scientific - Fractional", "input": "-1.00E-8"}, + {"description": "Scientific - 0 with Exponent", "input": "0E+6000"}, + {"description": "Scientific - 0 with Negative Exponent", "input": "0E-611"}, + {"description": "Scientific - No Decimal with Signed Exponent", "input": "1E+3"}, + {"description": "Scientific - Trailing Zero", "input": "1.050E+4"}, + {"description": "Scientific - With Decimal", "input": "1.05E+3"}, + {"description": "Scientific - Full", "input": "5192296858534827628530496329220095"}, + {"description": "Scientific - Large", "input": "1.000000000000000000000000000000000E+6144"}, + {"description": "Scientific - Largest", "input": "9.999999999999999999999999999999999E+6144"}, + { + "description": "Non-Canonical Parsing - Exponent Normalization", + "input": "-100E-10", + "expected": "-1.00E-8" + }, + { + "description": "Non-Canonical Parsing - Unsigned Positive Exponent", + "input": "1E3", + "expected": "1E+3" + }, + { + "description": "Non-Canonical Parsing - Lowercase Exponent Identifier", + "input": "1e+3", + "expected": "1E+3" + }, + { + "description": "Non-Canonical Parsing - Long Significand with Exponent", + "input": "12345689012345789012345E+12", + "expected": "1.2345689012345789012345E+34" + }, + { + "description": "Non-Canonical Parsing - Positive Sign", + "input": "+1234567890123456789012345678901234", + "expected": "1234567890123456789012345678901234" + }, + { + "description": "Non-Canonical Parsing - Long Decimal String", + "input": + ".0000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "0000000000000000000000000000000000000001", + "expected": "1E-999" + }, + {"description": "Non-Canonical Parsing - nan", "input": "nan", "expected": "NaN"}, + {"description": "Non-Canonical Parsing - nAn", "input": "nAn", "expected": "NaN"}, + { + "description": "Non-Canonical Parsing - +infinity", + "input": "+infinity", + "expected": "Infinity" + }, + { + "description": "Non-Canonical Parsing - infinity", + "input": "infinity", + "expected": "Infinity" + }, + { + "description": "Non-Canonical Parsing - infiniTY", + "input": "infiniTY", + "expected": "Infinity" + }, + {"description": "Non-Canonical Parsing - inf", "input": "inf", "expected": "Infinity"}, + {"description": "Non-Canonical Parsing - inF", "input": "inF", "expected": "Infinity"}, + { + "description": "Non-Canonical Parsing - -infinity", + "input": "-infinity", + "expected": "-Infinity" + }, + { + "description": "Non-Canonical Parsing - -infiniTy", + "input": "-infiniTy", + "expected": "-Infinity" + }, + {"description": "Non-Canonical Parsing - -Inf", "input": "-Infinity", "expected": "-Infinity"}, + {"description": "Non-Canonical Parsing - -inf", "input": "-inf", "expected": "-Infinity"}, + {"description": "Non-Canonical Parsing - -inF", "input": "-inF", "expected": "-Infinity"}, + {"description": "Rounded Subnormal number", "input": "10E-6177", "expected": "1E-6176"}, + {"description": "Clamped", "input": "1E6112", "expected": "1.0E+6112"}, + { + "description": "Exact rounding", + "input": + "100000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "0000000000000000000000000000", + "expected": "1.000000000000000000000000000000000E+999" + } +]; - testData.forEach(function(testCase) { - print(`Test - ${testCase.description}`); - var output = NumberDecimal(testCase.input).toString(); - if (testCase.expected) { - assert.eq(output, `NumberDecimal("${testCase.expected}")`); - } else { - assert.eq(output, `NumberDecimal("${testCase.input}")`); - } - }); +testData.forEach(function(testCase) { + print(`Test - ${testCase.description}`); + var output = NumberDecimal(testCase.input).toString(); + if (testCase.expected) { + assert.eq(output, `NumberDecimal("${testCase.expected}")`); + } else { + assert.eq(output, `NumberDecimal("${testCase.input}")`); + } +}); }());
\ No newline at end of file |