#50 - advanced ruby types test
authorFedor Yudanov <fedwiz@academ.org>
Tue, 9 Apr 2013 13:10:33 +0000 (20:10 +0700)
committerFedor Yudanov <fedwiz@academ.org>
Tue, 9 Apr 2013 13:10:33 +0000 (20:10 +0700)
rbejdb/src/rbbson.c
rbejdb/src/rbejdb.c
rbejdb/test/t2.rb

index 22be25b..3fbcfd1 100644 (file)
@@ -310,7 +310,7 @@ VALUE bson_iterator_to_ruby(bson_iterator* it, bson_type t) {
                 VALUE bdata = rb_ary_new();
                 int i;
                 for (i = 0; i < length; i++) {
-                    rb_ary_push(bdata, INT2NUM(buf[i]));
+                    rb_ary_push(bdata, INT2NUM((unsigned char) buf[i]));
                 }
 
                 val = rb_funcall(rb_path2class("EJDBBinary"), rb_intern("new"), 1, bdata);
index d2ae8f9..921eebd 100644 (file)
@@ -697,7 +697,7 @@ VALUE EJDB_binary_init(VALUE self, VALUE bdata) {
     for (i = 0; i < length; i++) {
         VALUE byte = rb_ary_entry(bdata, i);
         if (NUM2INT(byte) > 255 || NUM2INT(byte) < 0) {
-            rb_raise(rb_eRuntimeError, "Invalid value in binary array for EJDBBinary");
+            rb_raise(rb_eRuntimeError, "Invalid value in binary array for EJDBBinary: %d", NUM2INT(byte));
         }
     }
 
index 39a5841..2717665 100644 (file)
@@ -523,7 +523,7 @@ class EJDBTestUnit < Test::Unit::TestCase
         :true => true,
         :false => false,
         :symbol => :symbol,
-        :binary => EJDBBinary.new([1, 1, 1]),
+        :binary => EJDBBinary.new([1, 0, 255]),
         :time => Time.now
     })
 
@@ -544,7 +544,7 @@ class EJDBTestUnit < Test::Unit::TestCase
     assert !obj["false"]
     assert obj["symbol"].is_a? Symbol
     assert_equal(:symbol, obj["symbol"])
-    assert_equal([1, 1, 1], obj["binary"].to_a)
+    assert_equal([1, 0, 255], obj["binary"].to_a)
     assert obj["time"].is_a? Time
 
     #puts $jb.find("monsters").to_a.to_s