bson/testdata/bson-corpus/decimal128-1.json
2025-03-17 20:58:26 +01:00

318 lines
18 KiB
JSON

{
"description": "Decimal128",
"bson_type": "0x13",
"test_key": "d",
"valid": [
{
"description": "Special - Canonical NaN",
"canonical_bson": "180000001364000000000000000000000000000000007C00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}"
},
{
"description": "Special - Negative NaN",
"canonical_bson": "18000000136400000000000000000000000000000000FC00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}",
"lossy": true
},
{
"description": "Special - Negative NaN",
"canonical_bson": "18000000136400000000000000000000000000000000FC00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-NaN\"}}",
"lossy": true
},
{
"description": "Special - Canonical SNaN",
"canonical_bson": "180000001364000000000000000000000000000000007E00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}",
"lossy": true
},
{
"description": "Special - Negative SNaN",
"canonical_bson": "18000000136400000000000000000000000000000000FE00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}",
"lossy": true
},
{
"description": "Special - NaN with a payload",
"canonical_bson": "180000001364001200000000000000000000000000007E00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}",
"lossy": true
},
{
"description": "Special - Canonical Positive Infinity",
"canonical_bson": "180000001364000000000000000000000000000000007800",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
},
{
"description": "Special - Canonical Negative Infinity",
"canonical_bson": "18000000136400000000000000000000000000000000F800",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
},
{
"description": "Special - Invalid representation treated as 0",
"canonical_bson": "180000001364000000000000000000000000000000106C00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}",
"lossy": true
},
{
"description": "Special - Invalid representation treated as -0",
"canonical_bson": "18000000136400DCBA9876543210DEADBEEF00000010EC00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}",
"lossy": true
},
{
"description": "Special - Invalid representation treated as 0E3",
"canonical_bson": "18000000136400FFFFFFFFFFFFFFFFFFFFFFFFFFFF116C00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+3\"}}",
"lossy": true
},
{
"description": "Regular - Adjusted Exponent Limit",
"canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CF22F00",
"canonical_extjson": "{\"d\": { \"$numberDecimal\": \"0.000001234567890123456789012345678901234\" }}"
},
{
"description": "Regular - Smallest",
"canonical_bson": "18000000136400D204000000000000000000000000343000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.001234\"}}"
},
{
"description": "Regular - Smallest with Trailing Zeros",
"canonical_bson": "1800000013640040EF5A07000000000000000000002A3000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00123400000\"}}"
},
{
"description": "Regular - 0.1",
"canonical_bson": "1800000013640001000000000000000000000000003E3000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1\"}}"
},
{
"description": "Regular - 0.1234567890123456789012345678901234",
"canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CFC2F00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1234567890123456789012345678901234\"}}"
},
{
"description": "Regular - 0",
"canonical_bson": "180000001364000000000000000000000000000000403000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}"
},
{
"description": "Regular - -0",
"canonical_bson": "18000000136400000000000000000000000000000040B000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}"
},
{
"description": "Regular - -0.0",
"canonical_bson": "1800000013640000000000000000000000000000003EB000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0\"}}"
},
{
"description": "Regular - 2",
"canonical_bson": "180000001364000200000000000000000000000000403000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2\"}}"
},
{
"description": "Regular - 2.000",
"canonical_bson": "18000000136400D0070000000000000000000000003A3000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2.000\"}}"
},
{
"description": "Regular - Largest",
"canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3C403000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1234567890123456789012345678901234\"}}"
},
{
"description": "Scientific - Tiniest",
"canonical_bson": "18000000136400FFFFFFFF638E8D37C087ADBE09ED010000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9.999999999999999999999999999999999E-6143\"}}"
},
{
"description": "Scientific - Tiny",
"canonical_bson": "180000001364000100000000000000000000000000000000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}"
},
{
"description": "Scientific - Negative Tiny",
"canonical_bson": "180000001364000100000000000000000000000000008000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6176\"}}"
},
{
"description": "Scientific - Adjusted Exponent Limit",
"canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CF02F00",
"canonical_extjson": "{\"d\": { \"$numberDecimal\": \"1.234567890123456789012345678901234E-7\" }}"
},
{
"description": "Scientific - Fractional",
"canonical_bson": "1800000013640064000000000000000000000000002CB000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.00E-8\"}}"
},
{
"description": "Scientific - 0 with Exponent",
"canonical_bson": "180000001364000000000000000000000000000000205F00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6000\"}}"
},
{
"description": "Scientific - 0 with Negative Exponent",
"canonical_bson": "1800000013640000000000000000000000000000007A2B00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-611\"}}"
},
{
"description": "Scientific - No Decimal with Signed Exponent",
"canonical_bson": "180000001364000100000000000000000000000000463000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+3\"}}"
},
{
"description": "Scientific - Trailing Zero",
"canonical_bson": "180000001364001A04000000000000000000000000423000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.050E+4\"}}"
},
{
"description": "Scientific - With Decimal",
"canonical_bson": "180000001364006900000000000000000000000000423000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.05E+3\"}}"
},
{
"description": "Scientific - Full",
"canonical_bson": "18000000136400FFFFFFFFFFFFFFFFFFFFFFFFFFFF403000",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"5192296858534827628530496329220095\"}}"
},
{
"description": "Scientific - Large",
"canonical_bson": "18000000136400000000000A5BC138938D44C64D31FE5F00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+6144\"}}"
},
{
"description": "Scientific - Largest",
"canonical_bson": "18000000136400FFFFFFFF638E8D37C087ADBE09EDFF5F00",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9.999999999999999999999999999999999E+6144\"}}"
},
{
"description": "Non-Canonical Parsing - Exponent Normalization",
"canonical_bson": "1800000013640064000000000000000000000000002CB000",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-100E-10\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.00E-8\"}}"
},
{
"description": "Non-Canonical Parsing - Unsigned Positive Exponent",
"canonical_bson": "180000001364000100000000000000000000000000463000",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E3\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+3\"}}"
},
{
"description": "Non-Canonical Parsing - Lowercase Exponent Identifier",
"canonical_bson": "180000001364000100000000000000000000000000463000",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1e+3\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+3\"}}"
},
{
"description": "Non-Canonical Parsing - Long Significand with Exponent",
"canonical_bson": "1800000013640079D9E0F9763ADA429D0200000000583000",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12345689012345789012345E+12\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.2345689012345789012345E+34\"}}"
},
{
"description": "Non-Canonical Parsing - Positive Sign",
"canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3C403000",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+1234567890123456789012345678901234\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1234567890123456789012345678901234\"}}"
},
{
"description": "Non-Canonical Parsing - Long Decimal String",
"canonical_bson": "180000001364000100000000000000000000000000722800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \".000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-999\"}}"
},
{
"description": "Non-Canonical Parsing - nan",
"canonical_bson": "180000001364000000000000000000000000000000007C00",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"nan\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}"
},
{
"description": "Non-Canonical Parsing - nAn",
"canonical_bson": "180000001364000000000000000000000000000000007C00",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"nAn\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}"
},
{
"description": "Non-Canonical Parsing - +infinity",
"canonical_bson": "180000001364000000000000000000000000000000007800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+infinity\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
},
{
"description": "Non-Canonical Parsing - infinity",
"canonical_bson": "180000001364000000000000000000000000000000007800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"infinity\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
},
{
"description": "Non-Canonical Parsing - infiniTY",
"canonical_bson": "180000001364000000000000000000000000000000007800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"infiniTY\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
},
{
"description": "Non-Canonical Parsing - inf",
"canonical_bson": "180000001364000000000000000000000000000000007800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"inf\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
},
{
"description": "Non-Canonical Parsing - inF",
"canonical_bson": "180000001364000000000000000000000000000000007800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"inF\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
},
{
"description": "Non-Canonical Parsing - -infinity",
"canonical_bson": "18000000136400000000000000000000000000000000F800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-infinity\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
},
{
"description": "Non-Canonical Parsing - -infiniTy",
"canonical_bson": "18000000136400000000000000000000000000000000F800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-infiniTy\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
},
{
"description": "Non-Canonical Parsing - -Inf",
"canonical_bson": "18000000136400000000000000000000000000000000F800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
},
{
"description": "Non-Canonical Parsing - -inf",
"canonical_bson": "18000000136400000000000000000000000000000000F800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-inf\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
},
{
"description": "Non-Canonical Parsing - -inF",
"canonical_bson": "18000000136400000000000000000000000000000000F800",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-inF\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
},
{
"description": "Rounded Subnormal number",
"canonical_bson": "180000001364000100000000000000000000000000000000",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10E-6177\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}"
},
{
"description": "Clamped",
"canonical_bson": "180000001364000a00000000000000000000000000fe5f00",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E6112\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+6112\"}}"
},
{
"description": "Exact rounding",
"canonical_bson": "18000000136400000000000a5bc138938d44c64d31cc3700",
"degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"}}",
"canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+999\"}}"
}
]
}