1{
2 "description": "Decimal128",
3 "bson_type": "0x13",
4 "test_key": "d",
5 "valid": [
6 {
7 "description": "Special - Canonical NaN",
8 "canonical_bson": "180000001364000000000000000000000000000000007C00",
9 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}"
10 },
11 {
12 "description": "Special - Negative NaN",
13 "canonical_bson": "18000000136400000000000000000000000000000000FC00",
14 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}",
15 "lossy": true
16 },
17 {
18 "description": "Special - Negative NaN",
19 "canonical_bson": "18000000136400000000000000000000000000000000FC00",
20 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}",
21 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-NaN\"}}",
22 "lossy": true
23 },
24 {
25 "description": "Special - Canonical SNaN",
26 "canonical_bson": "180000001364000000000000000000000000000000007E00",
27 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}",
28 "lossy": true
29 },
30 {
31 "description": "Special - Negative SNaN",
32 "canonical_bson": "18000000136400000000000000000000000000000000FE00",
33 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}",
34 "lossy": true
35 },
36 {
37 "description": "Special - NaN with a payload",
38 "canonical_bson": "180000001364001200000000000000000000000000007E00",
39 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}",
40 "lossy": true
41 },
42 {
43 "description": "Special - Canonical Positive Infinity",
44 "canonical_bson": "180000001364000000000000000000000000000000007800",
45 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
46 },
47 {
48 "description": "Special - Canonical Negative Infinity",
49 "canonical_bson": "18000000136400000000000000000000000000000000F800",
50 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
51 },
52 {
53 "description": "Special - Invalid representation treated as 0",
54 "canonical_bson": "180000001364000000000000000000000000000000106C00",
55 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}",
56 "lossy": true
57 },
58 {
59 "description": "Special - Invalid representation treated as -0",
60 "canonical_bson": "18000000136400DCBA9876543210DEADBEEF00000010EC00",
61 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}",
62 "lossy": true
63 },
64 {
65 "description": "Special - Invalid representation treated as 0E3",
66 "canonical_bson": "18000000136400FFFFFFFFFFFFFFFFFFFFFFFFFFFF116C00",
67 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+3\"}}",
68 "lossy": true
69 },
70 {
71 "description": "Regular - Adjusted Exponent Limit",
72 "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CF22F00",
73 "canonical_extjson": "{\"d\": { \"$numberDecimal\": \"0.000001234567890123456789012345678901234\" }}"
74 },
75 {
76 "description": "Regular - Smallest",
77 "canonical_bson": "18000000136400D204000000000000000000000000343000",
78 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.001234\"}}"
79 },
80 {
81 "description": "Regular - Smallest with Trailing Zeros",
82 "canonical_bson": "1800000013640040EF5A07000000000000000000002A3000",
83 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00123400000\"}}"
84 },
85 {
86 "description": "Regular - 0.1",
87 "canonical_bson": "1800000013640001000000000000000000000000003E3000",
88 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1\"}}"
89 },
90 {
91 "description": "Regular - 0.1234567890123456789012345678901234",
92 "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CFC2F00",
93 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1234567890123456789012345678901234\"}}"
94 },
95 {
96 "description": "Regular - 0",
97 "canonical_bson": "180000001364000000000000000000000000000000403000",
98 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0\"}}"
99 },
100 {
101 "description": "Regular - -0",
102 "canonical_bson": "18000000136400000000000000000000000000000040B000",
103 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0\"}}"
104 },
105 {
106 "description": "Regular - -0.0",
107 "canonical_bson": "1800000013640000000000000000000000000000003EB000",
108 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0\"}}"
109 },
110 {
111 "description": "Regular - 2",
112 "canonical_bson": "180000001364000200000000000000000000000000403000",
113 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2\"}}"
114 },
115 {
116 "description": "Regular - 2.000",
117 "canonical_bson": "18000000136400D0070000000000000000000000003A3000",
118 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"2.000\"}}"
119 },
120 {
121 "description": "Regular - Largest",
122 "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3C403000",
123 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1234567890123456789012345678901234\"}}"
124 },
125 {
126 "description": "Scientific - Tiniest",
127 "canonical_bson": "18000000136400FFFFFFFF638E8D37C087ADBE09ED010000",
128 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9.999999999999999999999999999999999E-6143\"}}"
129 },
130 {
131 "description": "Scientific - Tiny",
132 "canonical_bson": "180000001364000100000000000000000000000000000000",
133 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}"
134 },
135 {
136 "description": "Scientific - Negative Tiny",
137 "canonical_bson": "180000001364000100000000000000000000000000008000",
138 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6176\"}}"
139 },
140 {
141 "description": "Scientific - Adjusted Exponent Limit",
142 "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3CF02F00",
143 "canonical_extjson": "{\"d\": { \"$numberDecimal\": \"1.234567890123456789012345678901234E-7\" }}"
144 },
145 {
146 "description": "Scientific - Fractional",
147 "canonical_bson": "1800000013640064000000000000000000000000002CB000",
148 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.00E-8\"}}"
149 },
150 {
151 "description": "Scientific - 0 with Exponent",
152 "canonical_bson": "180000001364000000000000000000000000000000205F00",
153 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6000\"}}"
154 },
155 {
156 "description": "Scientific - 0 with Negative Exponent",
157 "canonical_bson": "1800000013640000000000000000000000000000007A2B00",
158 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-611\"}}"
159 },
160 {
161 "description": "Scientific - No Decimal with Signed Exponent",
162 "canonical_bson": "180000001364000100000000000000000000000000463000",
163 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+3\"}}"
164 },
165 {
166 "description": "Scientific - Trailing Zero",
167 "canonical_bson": "180000001364001A04000000000000000000000000423000",
168 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.050E+4\"}}"
169 },
170 {
171 "description": "Scientific - With Decimal",
172 "canonical_bson": "180000001364006900000000000000000000000000423000",
173 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.05E+3\"}}"
174 },
175 {
176 "description": "Scientific - Full",
177 "canonical_bson": "18000000136400FFFFFFFFFFFFFFFFFFFFFFFFFFFF403000",
178 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"5192296858534827628530496329220095\"}}"
179 },
180 {
181 "description": "Scientific - Large",
182 "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FE5F00",
183 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+6144\"}}"
184 },
185 {
186 "description": "Scientific - Largest",
187 "canonical_bson": "18000000136400FFFFFFFF638E8D37C087ADBE09EDFF5F00",
188 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9.999999999999999999999999999999999E+6144\"}}"
189 },
190 {
191 "description": "Non-Canonical Parsing - Exponent Normalization",
192 "canonical_bson": "1800000013640064000000000000000000000000002CB000",
193 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-100E-10\"}}",
194 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.00E-8\"}}"
195 },
196 {
197 "description": "Non-Canonical Parsing - Unsigned Positive Exponent",
198 "canonical_bson": "180000001364000100000000000000000000000000463000",
199 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E3\"}}",
200 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+3\"}}"
201 },
202 {
203 "description": "Non-Canonical Parsing - Lowercase Exponent Identifier",
204 "canonical_bson": "180000001364000100000000000000000000000000463000",
205 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1e+3\"}}",
206 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+3\"}}"
207 },
208 {
209 "description": "Non-Canonical Parsing - Long Significand with Exponent",
210 "canonical_bson": "1800000013640079D9E0F9763ADA429D0200000000583000",
211 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"12345689012345789012345E+12\"}}",
212 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.2345689012345789012345E+34\"}}"
213 },
214 {
215 "description": "Non-Canonical Parsing - Positive Sign",
216 "canonical_bson": "18000000136400F2AF967ED05C82DE3297FF6FDE3C403000",
217 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+1234567890123456789012345678901234\"}}",
218 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1234567890123456789012345678901234\"}}"
219 },
220 {
221 "description": "Non-Canonical Parsing - Long Decimal String",
222 "canonical_bson": "180000001364000100000000000000000000000000722800",
223 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \".000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\"}}",
224 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-999\"}}"
225 },
226 {
227 "description": "Non-Canonical Parsing - nan",
228 "canonical_bson": "180000001364000000000000000000000000000000007C00",
229 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"nan\"}}",
230 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}"
231 },
232 {
233 "description": "Non-Canonical Parsing - nAn",
234 "canonical_bson": "180000001364000000000000000000000000000000007C00",
235 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"nAn\"}}",
236 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"NaN\"}}"
237 },
238 {
239 "description": "Non-Canonical Parsing - +infinity",
240 "canonical_bson": "180000001364000000000000000000000000000000007800",
241 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+infinity\"}}",
242 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
243 },
244 {
245 "description": "Non-Canonical Parsing - infinity",
246 "canonical_bson": "180000001364000000000000000000000000000000007800",
247 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"infinity\"}}",
248 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
249 },
250 {
251 "description": "Non-Canonical Parsing - infiniTY",
252 "canonical_bson": "180000001364000000000000000000000000000000007800",
253 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"infiniTY\"}}",
254 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
255 },
256 {
257 "description": "Non-Canonical Parsing - inf",
258 "canonical_bson": "180000001364000000000000000000000000000000007800",
259 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"inf\"}}",
260 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
261 },
262 {
263 "description": "Non-Canonical Parsing - inF",
264 "canonical_bson": "180000001364000000000000000000000000000000007800",
265 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"inF\"}}",
266 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"Infinity\"}}"
267 },
268 {
269 "description": "Non-Canonical Parsing - -infinity",
270 "canonical_bson": "18000000136400000000000000000000000000000000F800",
271 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-infinity\"}}",
272 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
273 },
274 {
275 "description": "Non-Canonical Parsing - -infiniTy",
276 "canonical_bson": "18000000136400000000000000000000000000000000F800",
277 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-infiniTy\"}}",
278 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
279 },
280 {
281 "description": "Non-Canonical Parsing - -Inf",
282 "canonical_bson": "18000000136400000000000000000000000000000000F800",
283 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}",
284 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
285 },
286 {
287 "description": "Non-Canonical Parsing - -inf",
288 "canonical_bson": "18000000136400000000000000000000000000000000F800",
289 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-inf\"}}",
290 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
291 },
292 {
293 "description": "Non-Canonical Parsing - -inF",
294 "canonical_bson": "18000000136400000000000000000000000000000000F800",
295 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-inF\"}}",
296 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-Infinity\"}}"
297 },
298 {
299 "description": "Rounded Subnormal number",
300 "canonical_bson": "180000001364000100000000000000000000000000000000",
301 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"10E-6177\"}}",
302 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}"
303 },
304 {
305 "description": "Clamped",
306 "canonical_bson": "180000001364000a00000000000000000000000000fe5f00",
307 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E6112\"}}",
308 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+6112\"}}"
309 },
310 {
311 "description": "Exact rounding",
312 "canonical_bson": "18000000136400000000000a5bc138938d44c64d31cc3700",
313 "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"}}",
314 "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+999\"}}"
315 }
316 ]
317}
View as plain text