diff --git a/bdb.gemspec b/bdb.gemspec index b475976..1bbfecc 100644 --- a/bdb.gemspec +++ b/bdb.gemspec @@ -2,7 +2,7 @@ BDB_SPEC = Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.required_ruby_version = '>=1.8.4' s.name = "bdb" - s.version = "0.0.1" + s.version = "0.0.2" s.authors = ["Matt Bauer", "Dan Janowski"] s.email = "bauer@pedalbrain.com" s.summary = "A Ruby interface to BerkeleyDB" diff --git a/ext/bdb.c b/ext/bdb.c index adf9196..dadaee4 100644 --- a/ext/bdb.c +++ b/ext/bdb.c @@ -1259,14 +1259,14 @@ int bt_compare_callback(DB *db, const DBT* key1, const DBT* key2) /* * call-seq: - * db.set_bt_compare(proc) + * db.btree_compare = proc * * set the btree key comparison function to the callback proc. * * callback proc has signature: * proc(db,key1,key2) */ -VALUE db_set_bt_compare(VALUE obj, VALUE cb_proc) +VALUE db_btree_compare_set(VALUE obj, VALUE cb_proc) { t_dbh *dbh; int rv; @@ -1283,10 +1283,10 @@ VALUE db_set_bt_compare(VALUE obj, VALUE cb_proc) rv=dbh->db->set_bt_compare(dbh->db,bt_compare_callback); #ifdef DEBUG_DB - fprintf(stderr,"set_bt_compare done 0x%x\n",dbh); + fprintf(stderr,"btree_compare set 0x%x\n",dbh); #endif if (rv != 0) { - raise_error(rv, "db_set_bt_compare failure: %s",db_strerror(rv)); + raise_error(rv, "db_btree_compare_set failure: %s",db_strerror(rv)); } return Qtrue; } @@ -2874,7 +2874,7 @@ void Init_bdb() { rb_define_method(cDb,"del",db_del,3); rb_define_method(cDb,"cursor",db_cursor,2); rb_define_method(cDb,"associate",db_associate,4); - rb_define_method(cDb,"set_btree_compare",db_set_bt_compare,1); + rb_define_method(cDb,"btree_compare=",db_btree_compare_set,1); rb_define_method(cDb,"flags=",db_flags_set,1); rb_define_method(cDb,"flags",db_flags_get,0); rb_define_method(cDb,"open",db_open,6); diff --git a/test/cursor_test.rb b/test/cursor_test.rb index a4b00ea..477ffe7 100644 --- a/test/cursor_test.rb +++ b/test/cursor_test.rb @@ -21,6 +21,17 @@ class CursorTest < Test::Unit::TestCase assert_equal '0', key assert_equal 'data-0', value end + + def test_get_range + keys = [] + key, value = @cursor.get("4", nil, Bdb::DB_SET_RANGE) + while key and key <= "9" + keys << key + key, value = @cursor.get(nil, nil, Bdb::DB_NEXT) + end + + assert_equal (4..9).collect {|i| i.to_s}, keys + end def test_pget @db1 = Bdb::Db.new @@ -71,9 +82,9 @@ class CursorTest < Test::Unit::TestCase assert_equal (0..9).collect {|i| i.to_s}, all end - def test_get_all_with_set_btree_compare + def test_get_all_with_btree_compare @db1 = Bdb::Db.new - @db1.set_btree_compare(proc {|db, key1, key2| key2 <=> key1}) + @db1.btree_compare = proc {|db, key1, key2| key2 <=> key1} @db1.open(nil, File.join(File.dirname(__FILE__), 'tmp', 'test1.db'), nil, Bdb::Db::BTREE, Bdb::DB_CREATE, 0) 10.times { |i| @db1.put(nil, i.to_s, "data-#{i}", 0)} @cursor1 = @db1.cursor(nil, 0) @@ -89,7 +100,7 @@ class CursorTest < Test::Unit::TestCase def test_btree_compare_raises_if_fixnum_not_returned @db1 = Bdb::Db.new - @db1.set_btree_compare(proc {|db, key1, key2| key1}) + @db1.btree_compare = proc {|db, key1, key2| key1} @db1.open(nil, File.join(File.dirname(__FILE__), 'tmp', 'test1.db'), nil, Bdb::Db::BTREE, Bdb::DB_CREATE, 0) assert_raises(TypeError) do