decoder for data_timestamp
This commit is contained in:
parent
1312c70677
commit
02b37f6e48
|
@ -611,6 +611,16 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
||||||
*position += 4;
|
*position += 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 17:
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int j;
|
||||||
|
memcpy(&i, buffer + *position, 4);
|
||||||
|
memcpy(&j, buffer + *position + 4, 4);
|
||||||
|
value = rb_ary_new3(2, LL2NUM(i), LL2NUM(j));
|
||||||
|
*position += 8;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
rb_raise(rb_eTypeError, "no c decoder for this type yet (%d)", type);
|
rb_raise(rb_eTypeError, "no c decoder for this type yet (%d)", type);
|
||||||
|
|
|
@ -46,6 +46,7 @@ class BSON
|
||||||
SYMBOL = 14
|
SYMBOL = 14
|
||||||
CODE_W_SCOPE = 15
|
CODE_W_SCOPE = 15
|
||||||
NUMBER_INT = 16
|
NUMBER_INT = 16
|
||||||
|
TIMESTAMP = 17
|
||||||
MAXKEY = 127
|
MAXKEY = 127
|
||||||
|
|
||||||
if RUBY_VERSION >= '1.9'
|
if RUBY_VERSION >= '1.9'
|
||||||
|
@ -199,6 +200,10 @@ class BSON
|
||||||
when CODE_W_SCOPE
|
when CODE_W_SCOPE
|
||||||
key = deserialize_cstr(@buf)
|
key = deserialize_cstr(@buf)
|
||||||
doc[key] = deserialize_code_w_scope_data(@buf)
|
doc[key] = deserialize_code_w_scope_data(@buf)
|
||||||
|
when TIMESTAMP
|
||||||
|
key = deserialize_cstr(@buf)
|
||||||
|
doc[key] = [deserialize_number_int_data(@buf),
|
||||||
|
deserialize_number_int_data(@buf)]
|
||||||
when EOO
|
when EOO
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
|
|
|
@ -181,6 +181,15 @@ class BSONTest < Test::Unit::TestCase
|
||||||
assert_equal '_id', roundtrip.keys.first
|
assert_equal '_id', roundtrip.keys.first
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_timestamp
|
||||||
|
val = {"test" => [4, 20]}
|
||||||
|
assert_equal val, @b.deserialize([0x13, 0x00, 0x00, 0x00,
|
||||||
|
0x11, 0x74, 0x65, 0x73,
|
||||||
|
0x74, 0x00, 0x04, 0x00,
|
||||||
|
0x00, 0x00, 0x14, 0x00,
|
||||||
|
0x00, 0x00, 0x00])
|
||||||
|
end
|
||||||
|
|
||||||
def test_do_not_change_original_object
|
def test_do_not_change_original_object
|
||||||
val = OrderedHash.new
|
val = OrderedHash.new
|
||||||
val['not_id'] = 1
|
val['not_id'] = 1
|
||||||
|
|
Loading…
Reference in New Issue