From: Fedor Yudanov Date: Tue, 9 Apr 2013 13:46:53 +0000 (+0700) Subject: #50 - advanced ruby types test X-Git-Tag: v1.2.12~296^2~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ffac50b3b15e905267273799770a05adf8a96d03;p=platform%2Fupstream%2Fejdb.git #50 - advanced ruby types test --- diff --git a/rbejdb/src/rbbson.c b/rbejdb/src/rbbson.c index 3fbcfd1..aeee16b 100644 --- a/rbejdb/src/rbbson.c +++ b/rbejdb/src/rbbson.c @@ -65,6 +65,7 @@ VALUE createBsonContextWrap(bson* bsonval, VALUE rbobj, VALUE traverse, int flag rbbsctx->bsonval = bsonval; rbbsctx->obj = rbobj; rbbsctx->arrayIndex = 0; + rbbsctx->flags= flags; rbbsctx->traverse_hash = !NIL_P(traverse) ? traverse : rb_hash_new(); return bsonContextWrap; @@ -144,6 +145,9 @@ int iterate_key_values_callback(VALUE key, VALUE val, VALUE 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)); } diff --git a/rbejdb/test/t2.rb b/rbejdb/test/t2.rb index 2717665..c52403b 100644 --- a/rbejdb/test/t2.rb +++ b/rbejdb/test/t2.rb @@ -547,6 +547,20 @@ class EJDBTestUnit < Test::Unit::TestCase 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) @@ -560,11 +574,15 @@ class EJDBTestUnit < Test::Unit::TestCase 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