bson 4.2.2 → 4.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +25 -7
  5. data/Rakefile +16 -9
  6. data/ext/bson/{native-endian.h → bson-endian.h} +5 -99
  7. data/ext/bson/bson-native.h +125 -0
  8. data/ext/bson/bytebuf.c +133 -0
  9. data/ext/bson/endian.c +117 -0
  10. data/ext/bson/init.c +355 -0
  11. data/ext/bson/libbson-utf8.c +230 -0
  12. data/ext/bson/read.c +411 -0
  13. data/ext/bson/util.c +95 -0
  14. data/ext/bson/write.c +680 -0
  15. data/lib/bson.rb +6 -3
  16. data/lib/bson/active_support.rb +17 -0
  17. data/lib/bson/array.rb +57 -17
  18. data/lib/bson/binary.rb +185 -13
  19. data/lib/bson/boolean.rb +12 -3
  20. data/lib/bson/code.rb +16 -2
  21. data/lib/bson/code_with_scope.rb +32 -5
  22. data/lib/bson/config.rb +1 -1
  23. data/lib/bson/date.rb +12 -2
  24. data/lib/bson/date_time.rb +2 -2
  25. data/lib/bson/db_pointer.rb +110 -0
  26. data/lib/bson/decimal128.rb +17 -3
  27. data/lib/bson/decimal128/builder.rb +1 -1
  28. data/lib/bson/document.rb +152 -5
  29. data/lib/bson/environment.rb +2 -1
  30. data/lib/bson/error.rb +27 -0
  31. data/lib/bson/ext_json.rb +383 -0
  32. data/lib/bson/false_class.rb +1 -1
  33. data/lib/bson/float.rb +48 -2
  34. data/lib/bson/hash.rb +68 -17
  35. data/lib/bson/int32.rb +52 -13
  36. data/lib/bson/int64.rb +59 -15
  37. data/lib/bson/integer.rb +36 -2
  38. data/lib/bson/json.rb +1 -1
  39. data/lib/bson/max_key.rb +13 -1
  40. data/lib/bson/min_key.rb +13 -1
  41. data/lib/bson/nil_class.rb +4 -2
  42. data/lib/bson/object.rb +28 -1
  43. data/lib/bson/object_id.rb +16 -2
  44. data/lib/bson/open_struct.rb +1 -1
  45. data/lib/bson/regexp.rb +27 -4
  46. data/lib/bson/registry.rb +3 -3
  47. data/lib/bson/specialized.rb +4 -2
  48. data/lib/bson/string.rb +5 -3
  49. data/lib/bson/symbol.rb +99 -7
  50. data/lib/bson/time.rb +63 -4
  51. data/lib/bson/time_with_zone.rb +54 -0
  52. data/lib/bson/timestamp.rb +44 -6
  53. data/lib/bson/true_class.rb +1 -1
  54. data/lib/bson/undefined.rb +12 -1
  55. data/lib/bson/version.rb +2 -2
  56. data/spec/bson/array_spec.rb +18 -1
  57. data/spec/bson/binary_spec.rb +100 -3
  58. data/spec/bson/binary_uuid_spec.rb +189 -0
  59. data/spec/bson/boolean_spec.rb +1 -1
  60. data/spec/bson/byte_buffer_read_spec.rb +197 -0
  61. data/spec/bson/byte_buffer_spec.rb +121 -381
  62. data/spec/bson/byte_buffer_write_spec.rb +854 -0
  63. data/spec/bson/code_spec.rb +1 -1
  64. data/spec/bson/code_with_scope_spec.rb +1 -1
  65. data/spec/bson/date_spec.rb +1 -1
  66. data/spec/bson/date_time_spec.rb +54 -1
  67. data/spec/bson/decimal128_spec.rb +35 -35
  68. data/spec/bson/document_as_spec.rb +46 -0
  69. data/spec/bson/document_spec.rb +197 -30
  70. data/spec/bson/ext_json_parse_spec.rb +308 -0
  71. data/spec/bson/false_class_spec.rb +1 -1
  72. data/spec/bson/float_spec.rb +37 -1
  73. data/spec/bson/hash_as_spec.rb +57 -0
  74. data/spec/bson/hash_spec.rb +209 -1
  75. data/spec/bson/int32_spec.rb +180 -6
  76. data/spec/bson/int64_spec.rb +199 -6
  77. data/spec/bson/integer_spec.rb +29 -3
  78. data/spec/bson/json_spec.rb +1 -1
  79. data/spec/bson/max_key_spec.rb +1 -1
  80. data/spec/bson/min_key_spec.rb +1 -1
  81. data/spec/bson/nil_class_spec.rb +1 -1
  82. data/spec/bson/object_id_spec.rb +1 -1
  83. data/spec/bson/object_spec.rb +1 -1
  84. data/spec/bson/open_struct_spec.rb +1 -1
  85. data/spec/bson/raw_spec.rb +34 -2
  86. data/spec/bson/regexp_spec.rb +1 -1
  87. data/spec/bson/registry_spec.rb +1 -1
  88. data/spec/bson/string_spec.rb +19 -1
  89. data/spec/bson/symbol_raw_spec.rb +45 -0
  90. data/spec/bson/symbol_spec.rb +63 -3
  91. data/spec/bson/time_spec.rb +205 -2
  92. data/spec/bson/time_with_zone_spec.rb +68 -0
  93. data/spec/bson/timestamp_spec.rb +56 -1
  94. data/spec/bson/true_class_spec.rb +1 -1
  95. data/spec/bson/undefined_spec.rb +1 -1
  96. data/spec/bson_spec.rb +1 -1
  97. data/spec/{support → runners}/common_driver.rb +1 -1
  98. data/spec/runners/corpus.rb +185 -0
  99. data/spec/{support/corpus.rb → runners/corpus_legacy.rb} +41 -59
  100. data/spec/spec_helper.rb +40 -3
  101. data/spec/{bson/driver_bson_spec.rb → spec_tests/common_driver_spec.rb} +1 -0
  102. data/spec/{bson/corpus_spec.rb → spec_tests/corpus_legacy_spec.rb} +10 -7
  103. data/spec/spec_tests/corpus_spec.rb +124 -0
  104. data/spec/spec_tests/data/corpus/README.md +15 -0
  105. data/spec/spec_tests/data/corpus/array.json +49 -0
  106. data/spec/spec_tests/data/corpus/binary.json +113 -0
  107. data/spec/spec_tests/data/corpus/boolean.json +27 -0
  108. data/spec/spec_tests/data/corpus/code.json +67 -0
  109. data/spec/spec_tests/data/corpus/code_w_scope.json +78 -0
  110. data/spec/spec_tests/data/corpus/datetime.json +42 -0
  111. data/spec/spec_tests/data/corpus/dbpointer.json +56 -0
  112. data/spec/spec_tests/data/corpus/dbref.json +31 -0
  113. data/spec/spec_tests/data/corpus/decimal128-1.json +317 -0
  114. data/spec/spec_tests/data/corpus/decimal128-2.json +793 -0
  115. data/spec/spec_tests/data/corpus/decimal128-3.json +1771 -0
  116. data/spec/spec_tests/data/corpus/decimal128-4.json +117 -0
  117. data/spec/spec_tests/data/corpus/decimal128-5.json +402 -0
  118. data/spec/spec_tests/data/corpus/decimal128-6.json +119 -0
  119. data/spec/spec_tests/data/corpus/decimal128-7.json +323 -0
  120. data/spec/spec_tests/data/corpus/document.json +36 -0
  121. data/spec/spec_tests/data/corpus/double.json +87 -0
  122. data/spec/spec_tests/data/corpus/int32.json +43 -0
  123. data/spec/spec_tests/data/corpus/int64.json +43 -0
  124. data/spec/spec_tests/data/corpus/maxkey.json +12 -0
  125. data/spec/spec_tests/data/corpus/minkey.json +12 -0
  126. data/spec/spec_tests/data/corpus/multi-type-deprecated.json +15 -0
  127. data/spec/spec_tests/data/corpus/multi-type.json +11 -0
  128. data/spec/spec_tests/data/corpus/null.json +12 -0
  129. data/spec/spec_tests/data/corpus/oid.json +28 -0
  130. data/spec/spec_tests/data/corpus/regex.json +65 -0
  131. data/spec/spec_tests/data/corpus/string.json +72 -0
  132. data/spec/spec_tests/data/corpus/symbol.json +80 -0
  133. data/spec/spec_tests/data/corpus/timestamp.json +34 -0
  134. data/spec/spec_tests/data/corpus/top.json +236 -0
  135. data/spec/spec_tests/data/corpus/undefined.json +15 -0
  136. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/array.json +8 -2
  137. data/spec/{support/corpus-tests/failures → spec_tests/data/corpus_legacy}/binary.json +0 -0
  138. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/boolean.json +0 -0
  139. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/code.json +1 -1
  140. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/code_w_scope.json +1 -1
  141. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/document.json +1 -1
  142. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/double.json +1 -1
  143. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/failures/datetime.json +0 -0
  144. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/failures/dbpointer.json +0 -0
  145. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/failures/int64.json +0 -0
  146. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/failures/symbol.json +0 -0
  147. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/int32.json +1 -1
  148. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/maxkey.json +1 -1
  149. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/minkey.json +1 -1
  150. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/null.json +1 -1
  151. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/oid.json +0 -0
  152. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/regex.json +1 -1
  153. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/string.json +0 -0
  154. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/timestamp.json +1 -1
  155. data/spec/{support/corpus-tests → spec_tests/data/corpus_legacy}/top.json +0 -0
  156. data/spec/{support/corpus-tests/failures → spec_tests/data/corpus_legacy}/undefined.json +0 -0
  157. data/spec/{support/driver-spec-tests → spec_tests/data}/decimal128/decimal128-1.json +0 -0
  158. data/spec/{support/driver-spec-tests → spec_tests/data}/decimal128/decimal128-2.json +0 -0
  159. data/spec/{support/driver-spec-tests → spec_tests/data}/decimal128/decimal128-3.json +0 -0
  160. data/spec/{support/driver-spec-tests → spec_tests/data}/decimal128/decimal128-4.json +0 -0
  161. data/spec/{support/driver-spec-tests → spec_tests/data}/decimal128/decimal128-5.json +0 -0
  162. data/spec/{support/driver-spec-tests → spec_tests/data}/decimal128/decimal128-6.json +0 -0
  163. data/spec/{support/driver-spec-tests → spec_tests/data}/decimal128/decimal128-7.json +0 -0
  164. data/spec/support/shared_examples.rb +3 -5
  165. data/spec/support/spec_config.rb +16 -0
  166. data/spec/support/utils.rb +10 -0
  167. metadata +227 -124
  168. metadata.gz.sig +0 -0
  169. data/ext/bson/bson_native.c +0 -762
@@ -0,0 +1,117 @@
1
+ {
2
+ "description": "Decimal128",
3
+ "bson_type": "0x13",
4
+ "test_key": "d",
5
+ "valid": [
6
+ {
7
+ "description": "[basx023] conform to rules and exponent will be in permitted range).",
8
+ "canonical_bson": "1800000013640001000000000000000000000000003EB000",
9
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.1\"}}"
10
+ },
11
+
12
+ {
13
+ "description": "[basx045] strings without E cannot generate E in result",
14
+ "canonical_bson": "1800000013640003000000000000000000000000003A3000",
15
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+0.003\"}}",
16
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.003\"}}"
17
+ },
18
+ {
19
+ "description": "[basx610] Zeros",
20
+ "canonical_bson": "1800000013640000000000000000000000000000003E3000",
21
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \".0\"}}",
22
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0\"}}"
23
+ },
24
+ {
25
+ "description": "[basx612] Zeros",
26
+ "canonical_bson": "1800000013640000000000000000000000000000003EB000",
27
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-.0\"}}",
28
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.0\"}}"
29
+ },
30
+ {
31
+ "description": "[basx043] strings without E cannot generate E in result",
32
+ "canonical_bson": "18000000136400FC040000000000000000000000003C3000",
33
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"+12.76\"}}",
34
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"12.76\"}}"
35
+ },
36
+ {
37
+ "description": "[basx055] strings without E cannot generate E in result",
38
+ "canonical_bson": "180000001364000500000000000000000000000000303000",
39
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000005\"}}",
40
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"5E-8\"}}"
41
+ },
42
+ {
43
+ "description": "[basx054] strings without E cannot generate E in result",
44
+ "canonical_bson": "180000001364000500000000000000000000000000323000",
45
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0000005\"}}",
46
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"5E-7\"}}"
47
+ },
48
+ {
49
+ "description": "[basx052] strings without E cannot generate E in result",
50
+ "canonical_bson": "180000001364000500000000000000000000000000343000",
51
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000005\"}}"
52
+ },
53
+ {
54
+ "description": "[basx051] strings without E cannot generate E in result",
55
+ "canonical_bson": "180000001364000500000000000000000000000000363000",
56
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"00.00005\"}}",
57
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00005\"}}"
58
+ },
59
+ {
60
+ "description": "[basx050] strings without E cannot generate E in result",
61
+ "canonical_bson": "180000001364000500000000000000000000000000383000",
62
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.0005\"}}"
63
+ },
64
+ {
65
+ "description": "[basx047] strings without E cannot generate E in result",
66
+ "canonical_bson": "1800000013640005000000000000000000000000003E3000",
67
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \".5\"}}",
68
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.5\"}}"
69
+ },
70
+ {
71
+ "description": "[dqbsr431] check rounding modes heeded (Rounded)",
72
+ "canonical_bson": "1800000013640099761CC7B548F377DC80A131C836FE2F00",
73
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.1111111111111111111111111111123450\"}}",
74
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.111111111111111111111111111112345\"}}"
75
+ },
76
+ {
77
+ "description": "OK2",
78
+ "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FC2F00",
79
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \".100000000000000000000000000000000000000000000000000000000000\"}}",
80
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.1000000000000000000000000000000000\"}}"
81
+ }
82
+ ],
83
+ "parseErrors": [
84
+ {
85
+ "description": "[basx564] Near-specials (Conversion_syntax)",
86
+ "string": "Infi"
87
+ },
88
+ {
89
+ "description": "[basx565] Near-specials (Conversion_syntax)",
90
+ "string": "Infin"
91
+ },
92
+ {
93
+ "description": "[basx566] Near-specials (Conversion_syntax)",
94
+ "string": "Infini"
95
+ },
96
+ {
97
+ "description": "[basx567] Near-specials (Conversion_syntax)",
98
+ "string": "Infinit"
99
+ },
100
+ {
101
+ "description": "[basx568] Near-specials (Conversion_syntax)",
102
+ "string": "-Infinit"
103
+ },
104
+ {
105
+ "description": "[basx590] some baddies with dots and Es and dots and specials (Conversion_syntax)",
106
+ "string": ".Infinity"
107
+ },
108
+ {
109
+ "description": "[basx562] Near-specials (Conversion_syntax)",
110
+ "string": "NaNq"
111
+ },
112
+ {
113
+ "description": "[basx563] Near-specials (Conversion_syntax)",
114
+ "string": "NaNs"
115
+ }
116
+ ]
117
+ }
@@ -0,0 +1,402 @@
1
+ {
2
+ "description": "Decimal128",
3
+ "bson_type": "0x13",
4
+ "test_key": "d",
5
+ "valid": [
6
+ {
7
+ "description": "[decq035] fold-downs (more below) (Clamped)",
8
+ "canonical_bson": "18000000136400000000807F1BCF85B27059C8A43CFE5F00",
9
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.23E+6144\"}}",
10
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.230000000000000000000000000000000E+6144\"}}"
11
+ },
12
+ {
13
+ "description": "[decq037] fold-downs (more below) (Clamped)",
14
+ "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FE5F00",
15
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6144\"}}",
16
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+6144\"}}"
17
+ },
18
+ {
19
+ "description": "[decq077] Nmin and below (Subnormal)",
20
+ "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04000000",
21
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.100000000000000000000000000000000E-6143\"}}",
22
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000000000E-6144\"}}"
23
+ },
24
+ {
25
+ "description": "[decq078] Nmin and below (Subnormal)",
26
+ "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04000000",
27
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000000000E-6144\"}}"
28
+ },
29
+ {
30
+ "description": "[decq079] Nmin and below (Subnormal)",
31
+ "canonical_bson": "180000001364000A00000000000000000000000000000000",
32
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000000000000000000000000000010E-6143\"}}",
33
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E-6175\"}}"
34
+ },
35
+ {
36
+ "description": "[decq080] Nmin and below (Subnormal)",
37
+ "canonical_bson": "180000001364000A00000000000000000000000000000000",
38
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E-6175\"}}"
39
+ },
40
+ {
41
+ "description": "[decq081] Nmin and below (Subnormal)",
42
+ "canonical_bson": "180000001364000100000000000000000000000000020000",
43
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.00000000000000000000000000000001E-6143\"}}",
44
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6175\"}}"
45
+ },
46
+ {
47
+ "description": "[decq082] Nmin and below (Subnormal)",
48
+ "canonical_bson": "180000001364000100000000000000000000000000020000",
49
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6175\"}}"
50
+ },
51
+ {
52
+ "description": "[decq083] Nmin and below (Subnormal)",
53
+ "canonical_bson": "180000001364000100000000000000000000000000000000",
54
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0.000000000000000000000000000000001E-6143\"}}",
55
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}"
56
+ },
57
+ {
58
+ "description": "[decq084] Nmin and below (Subnormal)",
59
+ "canonical_bson": "180000001364000100000000000000000000000000000000",
60
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}"
61
+ },
62
+ {
63
+ "description": "[decq090] underflows cannot be tested for simple copies, check edge cases (Subnormal)",
64
+ "canonical_bson": "180000001364000100000000000000000000000000000000",
65
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1e-6176\"}}",
66
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E-6176\"}}"
67
+ },
68
+ {
69
+ "description": "[decq100] underflows cannot be tested for simple copies, check edge cases (Subnormal)",
70
+ "canonical_bson": "18000000136400FFFFFFFF095BC138938D44C64D31000000",
71
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"999999999999999999999999999999999e-6176\"}}",
72
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"9.99999999999999999999999999999999E-6144\"}}"
73
+ },
74
+ {
75
+ "description": "[decq130] fold-downs (more below) (Clamped)",
76
+ "canonical_bson": "18000000136400000000807F1BCF85B27059C8A43CFEDF00",
77
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.23E+6144\"}}",
78
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.230000000000000000000000000000000E+6144\"}}"
79
+ },
80
+ {
81
+ "description": "[decq132] fold-downs (more below) (Clamped)",
82
+ "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FEDF00",
83
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E+6144\"}}",
84
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.000000000000000000000000000000000E+6144\"}}"
85
+ },
86
+ {
87
+ "description": "[decq177] Nmin and below (Subnormal)",
88
+ "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04008000",
89
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.100000000000000000000000000000000E-6143\"}}",
90
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.00000000000000000000000000000000E-6144\"}}"
91
+ },
92
+ {
93
+ "description": "[decq178] Nmin and below (Subnormal)",
94
+ "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04008000",
95
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.00000000000000000000000000000000E-6144\"}}"
96
+ },
97
+ {
98
+ "description": "[decq179] Nmin and below (Subnormal)",
99
+ "canonical_bson": "180000001364000A00000000000000000000000000008000",
100
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000000000000000000000000000000010E-6143\"}}",
101
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.0E-6175\"}}"
102
+ },
103
+ {
104
+ "description": "[decq180] Nmin and below (Subnormal)",
105
+ "canonical_bson": "180000001364000A00000000000000000000000000008000",
106
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1.0E-6175\"}}"
107
+ },
108
+ {
109
+ "description": "[decq181] Nmin and below (Subnormal)",
110
+ "canonical_bson": "180000001364000100000000000000000000000000028000",
111
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.00000000000000000000000000000001E-6143\"}}",
112
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6175\"}}"
113
+ },
114
+ {
115
+ "description": "[decq182] Nmin and below (Subnormal)",
116
+ "canonical_bson": "180000001364000100000000000000000000000000028000",
117
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6175\"}}"
118
+ },
119
+ {
120
+ "description": "[decq183] Nmin and below (Subnormal)",
121
+ "canonical_bson": "180000001364000100000000000000000000000000008000",
122
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0.000000000000000000000000000000001E-6143\"}}",
123
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6176\"}}"
124
+ },
125
+ {
126
+ "description": "[decq184] Nmin and below (Subnormal)",
127
+ "canonical_bson": "180000001364000100000000000000000000000000008000",
128
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6176\"}}"
129
+ },
130
+ {
131
+ "description": "[decq190] underflow edge cases (Subnormal)",
132
+ "canonical_bson": "180000001364000100000000000000000000000000008000",
133
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1e-6176\"}}",
134
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-1E-6176\"}}"
135
+ },
136
+ {
137
+ "description": "[decq200] underflow edge cases (Subnormal)",
138
+ "canonical_bson": "18000000136400FFFFFFFF095BC138938D44C64D31008000",
139
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-999999999999999999999999999999999e-6176\"}}",
140
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-9.99999999999999999999999999999999E-6144\"}}"
141
+ },
142
+ {
143
+ "description": "[decq400] zeros (Clamped)",
144
+ "canonical_bson": "180000001364000000000000000000000000000000000000",
145
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-8000\"}}",
146
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-6176\"}}"
147
+ },
148
+ {
149
+ "description": "[decq401] zeros (Clamped)",
150
+ "canonical_bson": "180000001364000000000000000000000000000000000000",
151
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-6177\"}}",
152
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E-6176\"}}"
153
+ },
154
+ {
155
+ "description": "[decq414] clamped zeros... (Clamped)",
156
+ "canonical_bson": "180000001364000000000000000000000000000000FE5F00",
157
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6112\"}}",
158
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6111\"}}"
159
+ },
160
+ {
161
+ "description": "[decq416] clamped zeros... (Clamped)",
162
+ "canonical_bson": "180000001364000000000000000000000000000000FE5F00",
163
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6144\"}}",
164
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6111\"}}"
165
+ },
166
+ {
167
+ "description": "[decq418] clamped zeros... (Clamped)",
168
+ "canonical_bson": "180000001364000000000000000000000000000000FE5F00",
169
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+8000\"}}",
170
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"0E+6111\"}}"
171
+ },
172
+ {
173
+ "description": "[decq420] negative zeros (Clamped)",
174
+ "canonical_bson": "180000001364000000000000000000000000000000008000",
175
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-8000\"}}",
176
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-6176\"}}"
177
+ },
178
+ {
179
+ "description": "[decq421] negative zeros (Clamped)",
180
+ "canonical_bson": "180000001364000000000000000000000000000000008000",
181
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-6177\"}}",
182
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E-6176\"}}"
183
+ },
184
+ {
185
+ "description": "[decq434] clamped zeros... (Clamped)",
186
+ "canonical_bson": "180000001364000000000000000000000000000000FEDF00",
187
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6112\"}}",
188
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6111\"}}"
189
+ },
190
+ {
191
+ "description": "[decq436] clamped zeros... (Clamped)",
192
+ "canonical_bson": "180000001364000000000000000000000000000000FEDF00",
193
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6144\"}}",
194
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6111\"}}"
195
+ },
196
+ {
197
+ "description": "[decq438] clamped zeros... (Clamped)",
198
+ "canonical_bson": "180000001364000000000000000000000000000000FEDF00",
199
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+8000\"}}",
200
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"-0E+6111\"}}"
201
+ },
202
+ {
203
+ "description": "[decq601] fold-down full sequence (Clamped)",
204
+ "canonical_bson": "18000000136400000000000A5BC138938D44C64D31FE5F00",
205
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6144\"}}",
206
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000000E+6144\"}}"
207
+ },
208
+ {
209
+ "description": "[decq603] fold-down full sequence (Clamped)",
210
+ "canonical_bson": "180000001364000000000081EFAC855B416D2DEE04FE5F00",
211
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6143\"}}",
212
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000000000E+6143\"}}"
213
+ },
214
+ {
215
+ "description": "[decq605] fold-down full sequence (Clamped)",
216
+ "canonical_bson": "1800000013640000000080264B91C02220BE377E00FE5F00",
217
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6142\"}}",
218
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000000000000E+6142\"}}"
219
+ },
220
+ {
221
+ "description": "[decq607] fold-down full sequence (Clamped)",
222
+ "canonical_bson": "1800000013640000000040EAED7446D09C2C9F0C00FE5F00",
223
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6141\"}}",
224
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000000E+6141\"}}"
225
+ },
226
+ {
227
+ "description": "[decq609] fold-down full sequence (Clamped)",
228
+ "canonical_bson": "18000000136400000000A0CA17726DAE0F1E430100FE5F00",
229
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6140\"}}",
230
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000000E+6140\"}}"
231
+ },
232
+ {
233
+ "description": "[decq611] fold-down full sequence (Clamped)",
234
+ "canonical_bson": "18000000136400000000106102253E5ECE4F200000FE5F00",
235
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6139\"}}",
236
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000000000E+6139\"}}"
237
+ },
238
+ {
239
+ "description": "[decq613] fold-down full sequence (Clamped)",
240
+ "canonical_bson": "18000000136400000000E83C80D09F3C2E3B030000FE5F00",
241
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6138\"}}",
242
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000000E+6138\"}}"
243
+ },
244
+ {
245
+ "description": "[decq615] fold-down full sequence (Clamped)",
246
+ "canonical_bson": "18000000136400000000E4D20CC8DCD2B752000000FE5F00",
247
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6137\"}}",
248
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000000E+6137\"}}"
249
+ },
250
+ {
251
+ "description": "[decq617] fold-down full sequence (Clamped)",
252
+ "canonical_bson": "180000001364000000004A48011416954508000000FE5F00",
253
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6136\"}}",
254
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000000E+6136\"}}"
255
+ },
256
+ {
257
+ "description": "[decq619] fold-down full sequence (Clamped)",
258
+ "canonical_bson": "18000000136400000000A1EDCCCE1BC2D300000000FE5F00",
259
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6135\"}}",
260
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000000E+6135\"}}"
261
+ },
262
+ {
263
+ "description": "[decq621] fold-down full sequence (Clamped)",
264
+ "canonical_bson": "18000000136400000080F64AE1C7022D1500000000FE5F00",
265
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6134\"}}",
266
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000000E+6134\"}}"
267
+ },
268
+ {
269
+ "description": "[decq623] fold-down full sequence (Clamped)",
270
+ "canonical_bson": "18000000136400000040B2BAC9E0191E0200000000FE5F00",
271
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6133\"}}",
272
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000000E+6133\"}}"
273
+ },
274
+ {
275
+ "description": "[decq625] fold-down full sequence (Clamped)",
276
+ "canonical_bson": "180000001364000000A0DEC5ADC935360000000000FE5F00",
277
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6132\"}}",
278
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000000E+6132\"}}"
279
+ },
280
+ {
281
+ "description": "[decq627] fold-down full sequence (Clamped)",
282
+ "canonical_bson": "18000000136400000010632D5EC76B050000000000FE5F00",
283
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6131\"}}",
284
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000000E+6131\"}}"
285
+ },
286
+ {
287
+ "description": "[decq629] fold-down full sequence (Clamped)",
288
+ "canonical_bson": "180000001364000000E8890423C78A000000000000FE5F00",
289
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6130\"}}",
290
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000000E+6130\"}}"
291
+ },
292
+ {
293
+ "description": "[decq631] fold-down full sequence (Clamped)",
294
+ "canonical_bson": "18000000136400000064A7B3B6E00D000000000000FE5F00",
295
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6129\"}}",
296
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000000E+6129\"}}"
297
+ },
298
+ {
299
+ "description": "[decq633] fold-down full sequence (Clamped)",
300
+ "canonical_bson": "1800000013640000008A5D78456301000000000000FE5F00",
301
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6128\"}}",
302
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000000E+6128\"}}"
303
+ },
304
+ {
305
+ "description": "[decq635] fold-down full sequence (Clamped)",
306
+ "canonical_bson": "180000001364000000C16FF2862300000000000000FE5F00",
307
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6127\"}}",
308
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000000E+6127\"}}"
309
+ },
310
+ {
311
+ "description": "[decq637] fold-down full sequence (Clamped)",
312
+ "canonical_bson": "180000001364000080C6A47E8D0300000000000000FE5F00",
313
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6126\"}}",
314
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000000E+6126\"}}"
315
+ },
316
+ {
317
+ "description": "[decq639] fold-down full sequence (Clamped)",
318
+ "canonical_bson": "1800000013640000407A10F35A0000000000000000FE5F00",
319
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6125\"}}",
320
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000000E+6125\"}}"
321
+ },
322
+ {
323
+ "description": "[decq641] fold-down full sequence (Clamped)",
324
+ "canonical_bson": "1800000013640000A0724E18090000000000000000FE5F00",
325
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6124\"}}",
326
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000000E+6124\"}}"
327
+ },
328
+ {
329
+ "description": "[decq643] fold-down full sequence (Clamped)",
330
+ "canonical_bson": "180000001364000010A5D4E8000000000000000000FE5F00",
331
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6123\"}}",
332
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000000E+6123\"}}"
333
+ },
334
+ {
335
+ "description": "[decq645] fold-down full sequence (Clamped)",
336
+ "canonical_bson": "1800000013640000E8764817000000000000000000FE5F00",
337
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6122\"}}",
338
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000000E+6122\"}}"
339
+ },
340
+ {
341
+ "description": "[decq647] fold-down full sequence (Clamped)",
342
+ "canonical_bson": "1800000013640000E40B5402000000000000000000FE5F00",
343
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6121\"}}",
344
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000000E+6121\"}}"
345
+ },
346
+ {
347
+ "description": "[decq649] fold-down full sequence (Clamped)",
348
+ "canonical_bson": "1800000013640000CA9A3B00000000000000000000FE5F00",
349
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6120\"}}",
350
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000000E+6120\"}}"
351
+ },
352
+ {
353
+ "description": "[decq651] fold-down full sequence (Clamped)",
354
+ "canonical_bson": "1800000013640000E1F50500000000000000000000FE5F00",
355
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6119\"}}",
356
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000000E+6119\"}}"
357
+ },
358
+ {
359
+ "description": "[decq653] fold-down full sequence (Clamped)",
360
+ "canonical_bson": "180000001364008096980000000000000000000000FE5F00",
361
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6118\"}}",
362
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000000E+6118\"}}"
363
+ },
364
+ {
365
+ "description": "[decq655] fold-down full sequence (Clamped)",
366
+ "canonical_bson": "1800000013640040420F0000000000000000000000FE5F00",
367
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6117\"}}",
368
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000000E+6117\"}}"
369
+ },
370
+ {
371
+ "description": "[decq657] fold-down full sequence (Clamped)",
372
+ "canonical_bson": "18000000136400A086010000000000000000000000FE5F00",
373
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6116\"}}",
374
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00000E+6116\"}}"
375
+ },
376
+ {
377
+ "description": "[decq659] fold-down full sequence (Clamped)",
378
+ "canonical_bson": "180000001364001027000000000000000000000000FE5F00",
379
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6115\"}}",
380
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0000E+6115\"}}"
381
+ },
382
+ {
383
+ "description": "[decq661] fold-down full sequence (Clamped)",
384
+ "canonical_bson": "18000000136400E803000000000000000000000000FE5F00",
385
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6114\"}}",
386
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.000E+6114\"}}"
387
+ },
388
+ {
389
+ "description": "[decq663] fold-down full sequence (Clamped)",
390
+ "canonical_bson": "180000001364006400000000000000000000000000FE5F00",
391
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6113\"}}",
392
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.00E+6113\"}}"
393
+ },
394
+ {
395
+ "description": "[decq665] fold-down full sequence (Clamped)",
396
+ "canonical_bson": "180000001364000A00000000000000000000000000FE5F00",
397
+ "degenerate_extjson": "{\"d\" : {\"$numberDecimal\" : \"1E+6112\"}}",
398
+ "canonical_extjson": "{\"d\" : {\"$numberDecimal\" : \"1.0E+6112\"}}"
399
+ }
400
+ ]
401
+ }
402
+