bson 4.9.4-java → 4.11.1-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +1 -3
- data/lib/bson-ruby.jar +0 -0
- data/lib/bson/date_time.rb +1 -1
- data/lib/bson/timestamp.rb +4 -4
- data/lib/bson/version.rb +1 -1
- data/spec/bson/byte_buffer_read_spec.rb +59 -3
- data/spec/bson/byte_buffer_spec.rb +129 -6
- data/spec/bson/byte_buffer_write_spec.rb +96 -0
- data/spec/bson/date_time_spec.rb +53 -0
- data/spec/bson/hash_spec.rb +56 -0
- data/spec/spec_tests/data/corpus/timestamp.json +10 -0
- data/spec/spec_tests/data/corpus/top.json +3 -3
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 725cd0cbc7f1ffe6b21db7a0bba75f06004cfe840bdc960ec3e800017b655bcd
|
4
|
+
data.tar.gz: ded62238e5d764555a8325e22832383413923fd794f5f342bc908d97868e1676
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d0b0a456f5bf8ac39396cceb105f7ef0f28cf17694583e4da3d9fb4385e8852151b1408ea15e77a27154013602f317f67ab8b2be83cae195fe579c34723ce0b
|
7
|
+
data.tar.gz: c21d38cb8696363b1ddbc87c781e2109b236ba99de9dfb86e9daa8cabacf230b83d84f06d68bbebbe7aafa6598358d77a395a6ee2426fc337b5cbaa07510b10c
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,3 +1 @@
|
|
1
|
-
|
2
|
-
�#�Cy�b���.}^�}_�wOJ������e�x��y ����'�?�3�H��τ�I��Isz�nc �c��hm�E�ǝl~Jn������V��+z�%g�L���(˘;��Ep�7L*v�!�(�J��,f^�Hssh��1իy�ܫ��Y�`�ǣ[�8�$P��R����ۄ_�F�� �E�����Y�q�ʊ;LƇ�������(�u������Y̳
|
3
|
-
A�kn�
|
1
|
+
`�]m1���I�+��d���]�B�����0�EO%p��H�G�-!�D¿����\�6%�!�H�z�?�ѩ�5W�o�ud��gdT(o�)}g2ސM'7씳_J�x͌q%:�pm(�qh.�a4+'3�[+�(s�s�{R�
|
data/lib/bson-ruby.jar
CHANGED
Binary file
|
data/lib/bson/date_time.rb
CHANGED
data/lib/bson/timestamp.rb
CHANGED
@@ -124,8 +124,8 @@ module BSON
|
|
124
124
|
#
|
125
125
|
# @since 2.0.0
|
126
126
|
def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
|
127
|
-
buffer.
|
128
|
-
buffer.
|
127
|
+
buffer.put_uint32(increment)
|
128
|
+
buffer.put_uint32(seconds)
|
129
129
|
end
|
130
130
|
|
131
131
|
# Deserialize timestamp from BSON.
|
@@ -140,8 +140,8 @@ module BSON
|
|
140
140
|
#
|
141
141
|
# @since 2.0.0
|
142
142
|
def self.from_bson(buffer, **options)
|
143
|
-
increment = buffer.
|
144
|
-
seconds = buffer.
|
143
|
+
increment = buffer.get_uint32
|
144
|
+
seconds = buffer.get_uint32
|
145
145
|
new(seconds, increment)
|
146
146
|
end
|
147
147
|
|
data/lib/bson/version.rb
CHANGED
@@ -66,7 +66,7 @@ describe BSON::ByteBuffer do
|
|
66
66
|
describe '#get_double' do
|
67
67
|
|
68
68
|
let(:buffer) do
|
69
|
-
described_class.new(
|
69
|
+
described_class.new(12.5.to_bson.to_s)
|
70
70
|
end
|
71
71
|
|
72
72
|
let!(:double) do
|
@@ -85,7 +85,7 @@ describe BSON::ByteBuffer do
|
|
85
85
|
describe '#get_int32' do
|
86
86
|
|
87
87
|
let(:buffer) do
|
88
|
-
described_class.new(
|
88
|
+
described_class.new(12.to_bson.to_s)
|
89
89
|
end
|
90
90
|
|
91
91
|
let!(:int32) do
|
@@ -101,10 +101,66 @@ describe BSON::ByteBuffer do
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
+
describe '#get_uint32' do
|
105
|
+
context 'when using 2^32-1' do
|
106
|
+
let(:buffer) do
|
107
|
+
described_class.new(4294967295.to_bson.to_s)
|
108
|
+
end
|
109
|
+
|
110
|
+
let!(:int32) do
|
111
|
+
buffer.get_uint32
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'gets the uint32 from the buffer' do
|
115
|
+
expect(int32).to eq(4294967295)
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'increments the position by 4' do
|
119
|
+
expect(buffer.read_position).to eq(4)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
context 'when using 2^32-2' do
|
124
|
+
let(:buffer) do
|
125
|
+
described_class.new(4294967294.to_bson.to_s)
|
126
|
+
end
|
127
|
+
|
128
|
+
let!(:int32) do
|
129
|
+
buffer.get_uint32
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'gets the uint32 from the buffer' do
|
133
|
+
expect(int32).to eq(4294967294)
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'increments the position by 4' do
|
137
|
+
expect(buffer.read_position).to eq(4)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
context 'when using 0' do
|
142
|
+
let(:buffer) do
|
143
|
+
described_class.new(0.to_bson.to_s)
|
144
|
+
end
|
145
|
+
|
146
|
+
let!(:int32) do
|
147
|
+
buffer.get_uint32
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'gets the uint32 from the buffer' do
|
151
|
+
expect(int32).to eq(0)
|
152
|
+
end
|
153
|
+
|
154
|
+
it 'increments the position by 4' do
|
155
|
+
expect(buffer.read_position).to eq(4)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
104
160
|
describe '#get_int64' do
|
105
161
|
|
106
162
|
let(:buffer) do
|
107
|
-
described_class.new(
|
163
|
+
described_class.new((Integer::MAX_64BIT - 1).to_bson.to_s)
|
108
164
|
end
|
109
165
|
|
110
166
|
let!(:int64) do
|
@@ -31,12 +31,14 @@ describe BSON::ByteBuffer do
|
|
31
31
|
described_class.new
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
context '#put_int32' do
|
35
|
+
before do
|
36
|
+
buffer.put_int32(5)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'returns the length of the buffer' do
|
40
|
+
expect(buffer.length).to eq(4)
|
41
|
+
end
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
@@ -50,6 +52,50 @@ describe BSON::ByteBuffer do
|
|
50
52
|
expect(buffer.length).to eq(2)
|
51
53
|
end
|
52
54
|
end
|
55
|
+
|
56
|
+
context 'after the byte buffer was read from' do
|
57
|
+
|
58
|
+
let(:buffer) do
|
59
|
+
described_class.new({}.to_bson.to_s)
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'returns the number of bytes remaining in the buffer' do
|
63
|
+
expect(buffer.length).to eq(5)
|
64
|
+
buffer.get_int32
|
65
|
+
expect(buffer.length).to eq(1)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'after the byte buffer was converted to string' do
|
70
|
+
|
71
|
+
shared_examples 'returns the total buffer length' do
|
72
|
+
it 'returns the total buffer length' do
|
73
|
+
expect(buffer.length).to eq(5)
|
74
|
+
buffer.to_s.length.should == 5
|
75
|
+
expect(buffer.length).to eq(5)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'read buffer' do
|
80
|
+
|
81
|
+
let(:buffer) do
|
82
|
+
described_class.new({}.to_bson.to_s)
|
83
|
+
end
|
84
|
+
|
85
|
+
include_examples 'returns the total buffer length'
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'write buffer' do
|
89
|
+
|
90
|
+
let(:buffer) do
|
91
|
+
described_class.new.tap do |buffer|
|
92
|
+
buffer.put_bytes('hello')
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
include_examples 'returns the total buffer length'
|
97
|
+
end
|
98
|
+
end
|
53
99
|
end
|
54
100
|
|
55
101
|
describe '#rewind!' do
|
@@ -104,4 +150,81 @@ describe BSON::ByteBuffer do
|
|
104
150
|
expect(buffer.write_position).to eq(1)
|
105
151
|
end
|
106
152
|
end
|
153
|
+
|
154
|
+
describe 'write followed by read' do
|
155
|
+
let(:buffer) do
|
156
|
+
described_class.new
|
157
|
+
end
|
158
|
+
|
159
|
+
context 'one cycle' do
|
160
|
+
it 'returns the written data' do
|
161
|
+
buffer.put_cstring('hello')
|
162
|
+
buffer.get_cstring.should == 'hello'
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
context 'two cycles' do
|
167
|
+
it 'returns the written data' do
|
168
|
+
buffer.put_cstring('hello')
|
169
|
+
buffer.get_cstring.should == 'hello'
|
170
|
+
|
171
|
+
buffer.put_cstring('world')
|
172
|
+
buffer.get_cstring.should == 'world'
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
context 'mixed cycles' do
|
177
|
+
it 'returns the written data' do
|
178
|
+
if BSON::Environment.jruby?
|
179
|
+
pending 'RUBY-2334'
|
180
|
+
end
|
181
|
+
|
182
|
+
buffer.put_int32(1)
|
183
|
+
buffer.put_int32(2)
|
184
|
+
|
185
|
+
buffer.get_int32.should == 1
|
186
|
+
|
187
|
+
buffer.put_int32(3)
|
188
|
+
|
189
|
+
buffer.get_int32.should == 2
|
190
|
+
buffer.get_int32.should == 3
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
describe '#to_s' do
|
196
|
+
context 'read buffer' do
|
197
|
+
let(:buffer) do
|
198
|
+
described_class.new("\x18\x00\x00\x00*\x00\x00\x00")
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'returns the data' do
|
202
|
+
buffer.to_s.should == "\x18\x00\x00\x00*\x00\x00\x00"
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'returns the remaining buffer contents after a read' do
|
206
|
+
buffer.to_s.should == "\x18\x00\x00\x00*\x00\x00\x00"
|
207
|
+
buffer.get_int32.should == 24
|
208
|
+
buffer.to_s.should == "*\x00\x00\x00"
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
context 'write buffer' do
|
213
|
+
let(:buffer) do
|
214
|
+
described_class.new.tap do |buffer|
|
215
|
+
buffer.put_int32(24)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
it 'returns the data' do
|
220
|
+
buffer.to_s.should == "\x18\x00\x00\x00".force_encoding('binary')
|
221
|
+
end
|
222
|
+
|
223
|
+
it 'returns the complete buffer contents after a write' do
|
224
|
+
buffer.to_s.should == "\x18\x00\x00\x00".force_encoding('binary')
|
225
|
+
buffer.put_int32(42)
|
226
|
+
buffer.to_s.should == "\x18\x00\x00\x00*\x00\x00\x00".force_encoding('binary')
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|
107
230
|
end
|
@@ -585,6 +585,102 @@ describe BSON::ByteBuffer do
|
|
585
585
|
end
|
586
586
|
end
|
587
587
|
|
588
|
+
describe '#put_uint32' do
|
589
|
+
context 'when argument is a float' do
|
590
|
+
it 'raises an Argument Error' do
|
591
|
+
expect{ buffer.put_uint32(4.934) }.to raise_error(ArgumentError, "put_uint32: incorrect type: float, expected: integer")
|
592
|
+
end
|
593
|
+
end
|
594
|
+
|
595
|
+
context 'when number is in range' do
|
596
|
+
let(:modified) do
|
597
|
+
buffer.put_uint32(5)
|
598
|
+
end
|
599
|
+
|
600
|
+
it 'returns gets the correct number from the buffer' do
|
601
|
+
expect(modified.get_uint32).to eq(5)
|
602
|
+
end
|
603
|
+
|
604
|
+
it 'returns the length of the buffer' do
|
605
|
+
expect(modified.length).to eq(4)
|
606
|
+
end
|
607
|
+
end
|
608
|
+
|
609
|
+
context 'when number is 0' do
|
610
|
+
let(:modified) do
|
611
|
+
buffer.put_uint32(0)
|
612
|
+
end
|
613
|
+
|
614
|
+
it 'returns gets the correct number from the buffer' do
|
615
|
+
expect(modified.get_uint32).to eq(0)
|
616
|
+
end
|
617
|
+
|
618
|
+
it 'returns the length of the buffer' do
|
619
|
+
expect(modified.length).to eq(4)
|
620
|
+
end
|
621
|
+
end
|
622
|
+
|
623
|
+
context 'when number doesn\'t fit in signed int32' do
|
624
|
+
let(:modified) do
|
625
|
+
buffer.put_uint32(4294967295)
|
626
|
+
end
|
627
|
+
|
628
|
+
let(:expected) do
|
629
|
+
[ 4294967295 ].pack(BSON::Int32::PACK)
|
630
|
+
end
|
631
|
+
|
632
|
+
it 'appends the int32 to the byte buffer' do
|
633
|
+
expect(modified.to_s).to eq(expected)
|
634
|
+
end
|
635
|
+
|
636
|
+
it 'get returns correct number' do
|
637
|
+
expect(modified.get_uint32).to eq(4294967295)
|
638
|
+
end
|
639
|
+
|
640
|
+
it 'returns the length of the buffer' do
|
641
|
+
expect(modified.length).to eq(4)
|
642
|
+
end
|
643
|
+
end
|
644
|
+
|
645
|
+
context 'when number is 2^31' do
|
646
|
+
let(:modified) do
|
647
|
+
buffer.put_uint32(2147483648)
|
648
|
+
end
|
649
|
+
|
650
|
+
it 'returns gets the correct number from the buffer' do
|
651
|
+
expect(modified.get_uint32).to eq(2147483648)
|
652
|
+
end
|
653
|
+
|
654
|
+
it 'returns the length of the buffer' do
|
655
|
+
expect(modified.length).to eq(4)
|
656
|
+
end
|
657
|
+
end
|
658
|
+
|
659
|
+
context 'when number is 2^31-1' do
|
660
|
+
let(:modified) do
|
661
|
+
buffer.put_uint32(2147483647)
|
662
|
+
end
|
663
|
+
|
664
|
+
it 'returns gets the correct number from the buffer' do
|
665
|
+
expect(modified.get_uint32).to eq(2147483647)
|
666
|
+
end
|
667
|
+
|
668
|
+
it 'returns the length of the buffer' do
|
669
|
+
expect(modified.length).to eq(4)
|
670
|
+
end
|
671
|
+
end
|
672
|
+
|
673
|
+
context 'when number is not in range' do
|
674
|
+
it 'raises error on out of top range' do
|
675
|
+
expect{ buffer.put_uint32(4294967296) }.to raise_error(RangeError, "Number 4294967296 is out of range [0, 2^32)")
|
676
|
+
end
|
677
|
+
|
678
|
+
it 'raises error on out of bottom range' do
|
679
|
+
expect{ buffer.put_uint32(-1) }.to raise_error(RangeError, "Number -1 is out of range [0, 2^32)")
|
680
|
+
end
|
681
|
+
end
|
682
|
+
end
|
683
|
+
|
588
684
|
describe '#put_int64' do
|
589
685
|
|
590
686
|
context 'when the integer is 64 bit' do
|
data/spec/bson/date_time_spec.rb
CHANGED
@@ -35,5 +35,58 @@ describe DateTime do
|
|
35
35
|
|
36
36
|
it_behaves_like "a serializable bson element"
|
37
37
|
end
|
38
|
+
|
39
|
+
context "when the dates don't both use Gregorian" do
|
40
|
+
|
41
|
+
let(:shakespeare_datetime) do
|
42
|
+
DateTime.iso8601('1616-04-23', Date::ENGLAND)
|
43
|
+
end
|
44
|
+
|
45
|
+
let(:gregorian_datetime) do
|
46
|
+
DateTime.iso8601('1616-04-23', Date::GREGORIAN)
|
47
|
+
end
|
48
|
+
|
49
|
+
context "when putting to bson" do
|
50
|
+
|
51
|
+
let(:shakespeare) do
|
52
|
+
{ a: shakespeare_datetime }.to_bson
|
53
|
+
end
|
54
|
+
|
55
|
+
let(:gregorian) do
|
56
|
+
{ a: gregorian_datetime }.to_bson
|
57
|
+
end
|
58
|
+
|
59
|
+
it "does not equal each other" do
|
60
|
+
expect(shakespeare.to_s).to_not eq(gregorian.to_s)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "the english date is 10 days later" do
|
64
|
+
expect(shakespeare.to_s).to eq({ a: DateTime.iso8601('1616-05-03', Date::GREGORIAN) }.to_bson.to_s)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context "when putting and receiving from bson" do
|
69
|
+
|
70
|
+
let(:shakespeare) do
|
71
|
+
Hash.from_bson(BSON::ByteBuffer.new({ a: shakespeare_datetime }.to_bson.to_s))
|
72
|
+
end
|
73
|
+
|
74
|
+
let(:gregorian) do
|
75
|
+
Hash.from_bson(BSON::ByteBuffer.new({ a: gregorian_datetime }.to_bson.to_s))
|
76
|
+
end
|
77
|
+
|
78
|
+
it "does not equal each other" do
|
79
|
+
expect(shakespeare).to_not eq(gregorian)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "the english date is 10 days later" do
|
83
|
+
expect(shakespeare[:a]).to eq(DateTime.iso8601('1616-05-03', Date::GREGORIAN).to_time)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "the gregorian date is the same" do
|
87
|
+
expect(gregorian[:a]).to eq(DateTime.iso8601('1616-04-23', Date::GREGORIAN).to_time)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
38
91
|
end
|
39
92
|
end
|
data/spec/bson/hash_spec.rb
CHANGED
@@ -244,6 +244,16 @@ describe Hash do
|
|
244
244
|
/(Hash value for key 'foo'|Value) does not define its BSON serialized type:.*HashSpecUnserializableClass/)
|
245
245
|
end
|
246
246
|
end
|
247
|
+
|
248
|
+
context 'when reading from a byte buffer that was previously written to' do
|
249
|
+
let(:buffer) do
|
250
|
+
{foo: 42}.to_bson
|
251
|
+
end
|
252
|
+
|
253
|
+
it 'returns the original hash' do
|
254
|
+
expect(Hash.from_bson(buffer)).to eq('foo' => 42)
|
255
|
+
end
|
256
|
+
end
|
247
257
|
end
|
248
258
|
|
249
259
|
describe '#to_bson' do
|
@@ -310,4 +320,50 @@ describe Hash do
|
|
310
320
|
end
|
311
321
|
end
|
312
322
|
end
|
323
|
+
|
324
|
+
describe '#from_bson' do
|
325
|
+
context 'when bson document has duplicate keys' do
|
326
|
+
let(:buf) do
|
327
|
+
buf = BSON::ByteBuffer.new
|
328
|
+
buf.put_int32(37)
|
329
|
+
buf.put_byte("\x02")
|
330
|
+
buf.put_cstring('foo')
|
331
|
+
buf.put_string('bar')
|
332
|
+
buf.put_byte("\x02")
|
333
|
+
buf.put_cstring('foo')
|
334
|
+
buf.put_string('overwrite')
|
335
|
+
buf.put_byte("\x00")
|
336
|
+
|
337
|
+
BSON::ByteBuffer.new(buf.to_s)
|
338
|
+
end
|
339
|
+
|
340
|
+
let(:doc) { Hash.from_bson(buf) }
|
341
|
+
|
342
|
+
it 'overwrites first value with second value' do
|
343
|
+
doc.should == {'foo' => 'overwrite'}
|
344
|
+
end
|
345
|
+
end
|
346
|
+
|
347
|
+
context 'when bson document has string and symbol keys of the same name' do
|
348
|
+
let(:buf) do
|
349
|
+
buf = BSON::ByteBuffer.new
|
350
|
+
buf.put_int32(31)
|
351
|
+
buf.put_byte("\x02")
|
352
|
+
buf.put_cstring('foo')
|
353
|
+
buf.put_string('bar')
|
354
|
+
buf.put_byte("\x0e")
|
355
|
+
buf.put_cstring('foo')
|
356
|
+
buf.put_string('bar')
|
357
|
+
buf.put_byte("\x00")
|
358
|
+
|
359
|
+
BSON::ByteBuffer.new(buf.to_s)
|
360
|
+
end
|
361
|
+
|
362
|
+
let(:doc) { Hash.from_bson(buf) }
|
363
|
+
|
364
|
+
it 'overwrites first value with second value' do
|
365
|
+
doc.should == {'foo' => :bar}
|
366
|
+
end
|
367
|
+
end
|
368
|
+
end
|
313
369
|
end
|
@@ -13,6 +13,16 @@
|
|
13
13
|
"canonical_bson": "100000001161002A00000015CD5B0700",
|
14
14
|
"canonical_extjson": "{\"a\" : {\"$timestamp\" : {\"t\" : 123456789, \"i\" : 42} } }",
|
15
15
|
"degenerate_extjson": "{\"a\" : {\"$timestamp\" : {\"i\" : 42, \"t\" : 123456789} } }"
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"description": "Timestamp with high-order bit set on both seconds and increment",
|
19
|
+
"canonical_bson": "10000000116100FFFFFFFFFFFFFFFF00",
|
20
|
+
"canonical_extjson": "{\"a\" : {\"$timestamp\" : {\"t\" : 4294967295, \"i\" : 4294967295} } }"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"description": "Timestamp with high-order bit set on both seconds and increment (not UINT32_MAX)",
|
24
|
+
"canonical_bson": "1000000011610000286BEE00286BEE00",
|
25
|
+
"canonical_extjson": "{\"a\" : {\"$timestamp\" : {\"t\" : 4000000000, \"i\" : 4000000000} } }"
|
16
26
|
}
|
17
27
|
],
|
18
28
|
"decodeErrors": [
|
@@ -65,11 +65,11 @@
|
|
65
65
|
"parseErrors": [
|
66
66
|
{
|
67
67
|
"description" : "Bad $regularExpression (extra field)",
|
68
|
-
"string" : "{\"a\" : \"$regularExpression\": {\"pattern\": \"abc\", \"options\": \"\", \"unrelated\": true}}}"
|
68
|
+
"string" : "{\"a\" : {\"$regularExpression\": {\"pattern\": \"abc\", \"options\": \"\", \"unrelated\": true}}}"
|
69
69
|
},
|
70
70
|
{
|
71
71
|
"description" : "Bad $regularExpression (missing options field)",
|
72
|
-
"string" : "{\"a\" : \"$regularExpression\": {\"pattern\": \"abc\"}}}"
|
72
|
+
"string" : "{\"a\" : {\"$regularExpression\": {\"pattern\": \"abc\"}}}"
|
73
73
|
},
|
74
74
|
{
|
75
75
|
"description": "Bad $regularExpression (pattern is number, not string)",
|
@@ -81,7 +81,7 @@
|
|
81
81
|
},
|
82
82
|
{
|
83
83
|
"description" : "Bad $regularExpression (missing pattern field)",
|
84
|
-
"string" : "{\"a\" : \"$regularExpression\": {\"options\":\"ix\"}}}"
|
84
|
+
"string" : "{\"a\" : {\"$regularExpression\": {\"options\":\"ix\"}}}"
|
85
85
|
},
|
86
86
|
{
|
87
87
|
"description": "Bad $oid (number, not string)",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.11.1
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Tyler Brock
|
@@ -33,7 +33,7 @@ cert_chain:
|
|
33
33
|
gpvfPNWMwyBDlHaNS3GfO6cRRxBOvEG05GUCsvtTY4Bpe8yjE64wg1ymb47LMOnv
|
34
34
|
Qb1lGORmf/opg45mluKUYl7pQNZHD0d3
|
35
35
|
-----END CERTIFICATE-----
|
36
|
-
date: 2020-
|
36
|
+
date: 2020-11-04 00:00:00.000000000 Z
|
37
37
|
dependencies: []
|
38
38
|
description: A fully featured BSON specification implementation in Ruby
|
39
39
|
email:
|
metadata.gz.sig
CHANGED
Binary file
|