rbbsctx->bsonval = bsonval;
rbbsctx->obj = rbobj;
rbbsctx->arrayIndex = 0;
+ rbbsctx->flags= flags;
rbbsctx->traverse_hash = !NIL_P(traverse) ? traverse : rb_hash_new();
return bsonContextWrap;
}
break;
case T_SYMBOL: {
+ if (rbbsctx->flags & RUBY_TO_BSON_AS_QUERY) {
+ rb_raise(rb_eRuntimeError, "Symbol values in queries are not supported");
+ }
VALUE sname = rb_funcall(val, rb_intern("to_s"), 0);
bson_append_symbol(b, attrName, StringValuePtr(sname));
}
assert_equal([1, 0, 255], obj["binary"].to_a)
assert obj["time"].is_a? Time
+ #what we can't save
+ assert_raise(RangeError) {
+ $jb.save("monsters", {:toobigint => 3791237293719837192837292})
+ }
+ assert_raise(RuntimeError) {
+ $jb.save("monsters", {:class => Array})
+ }
+ assert_raise(RuntimeError) {
+ $jb.save("monsters", {:data => $jb})
+ }
+ assert_raise(RuntimeError) {
+ $jb.save("monsters", {:module => Math})
+ }
+
#puts $jb.find("monsters").to_a.to_s
assert_equal(7, $jb.find("monsters").count)
assert_equal(0, $jb.find("monsters", {:name => "abracadabra"}).count)
assert_equal(0, $jb.find("monsters", {:name => ":abracadabra"}).count)
- assert_equal(7, $jb.find("monsters", {:name => :abracadabra}).count) #todo: symbol search seems to be not supported yet
- assert_equal(7, $jb.find("monsters", {:name => :what_is_this?}).count)
+ assert_raise(RuntimeError) {
+ $jb.find("monsters", {:name => :abracadabra}) #todo: symbol search seems to be not supported yet
+ }
assert_equal(0, $jb.find("monsters", {:name => {"$in" => ["what_is_this?"]}}).count)
+ assert_equal(1, $jb.find("monsters", {:maxfixnum => {"$exists" => true}}, {:onlycount => true}))
+ assert_equal(6, $jb.find("monsters", {:maxfixnum => {"$exists" => false}}, {:onlycount => true}))
+
puts __method__.inspect + " has passed successfull"
end