157 lines
4.2 KiB
Ruby
157 lines
4.2 KiB
Ruby
require 'test_helper'
|
|
|
|
class DbTest < Test::Unit::TestCase
|
|
|
|
def setup
|
|
mkdir File.join(File.dirname(__FILE__), 'tmp')
|
|
@db = Bdb::Db.new
|
|
@db.open(nil, File.join(File.dirname(__FILE__), 'tmp', 'test.db'), nil, Bdb::Db::BTREE, Bdb::DB_CREATE, 0)
|
|
end
|
|
|
|
def teardown
|
|
assert(@db.close(0)) if @db
|
|
rm_rf File.join(File.dirname(__FILE__), 'tmp')
|
|
end
|
|
|
|
def test_put_and_get
|
|
@db.put(nil, 'key', 'data', 0)
|
|
result = @db.get(nil, 'key', nil, 0)
|
|
assert_equal 'data', result
|
|
end
|
|
|
|
def test_del
|
|
@db.put(nil, 'key', 'data', 0)
|
|
result = @db.get(nil, 'key', nil, 0)
|
|
assert_equal 'data', result
|
|
@db.del(nil, 'key', 0)
|
|
result = @db.get(nil, 'key', nil, 0)
|
|
assert_nil result
|
|
end
|
|
|
|
def test_flags_set_and_get
|
|
@db1 = Bdb::Db.new
|
|
@db1.flags = Bdb::DB_DUPSORT
|
|
assert Bdb::DB_DUPSORT, @db1.flags
|
|
end
|
|
|
|
def test_associate_and_pget
|
|
@db1 = Bdb::Db.new
|
|
@db1.flags = Bdb::DB_DUPSORT
|
|
@db1.open(nil, File.join(File.dirname(__FILE__), 'tmp', 'test1.db'), nil, Bdb::Db::HASH, Bdb::DB_CREATE, 0)
|
|
|
|
@db.associate(nil, @db1, 0, proc { |sdb, key, data| key.split('-')[0] })
|
|
|
|
@db.put(nil, '1234-5678', 'data', 0)
|
|
@db.put(nil, '5678-1234', 'atad', 0)
|
|
|
|
result = @db.get(nil, '1234-5678', nil, 0)
|
|
assert_equal 'data', result
|
|
result = @db1.get(nil, '5678', nil, 0)
|
|
assert_equal 'atad', result
|
|
|
|
result = @db1.pget(nil, '1234', nil, 0)
|
|
assert_equal ['1234-5678', 'data'], result
|
|
|
|
@db1.close(0)
|
|
end
|
|
|
|
def test_associate_with_multiple_keys
|
|
@db1 = Bdb::Db.new
|
|
@db1.flags = Bdb::DB_DUPSORT
|
|
@db1.open(nil, File.join(File.dirname(__FILE__), 'tmp', 'test1.db'), nil, Bdb::Db::HASH, Bdb::DB_CREATE, 0)
|
|
|
|
@db.associate(nil, @db1, 0, proc { |sdb, key, data| key.split('-') })
|
|
|
|
@db.put(nil, '1234-5678', 'data', 0)
|
|
@db.put(nil, '8765-4321', 'atad', 0)
|
|
|
|
result = @db.get(nil, '1234-5678', nil, 0)
|
|
assert_equal 'data', result
|
|
result = @db1.get(nil, '5678', nil, 0)
|
|
assert_equal 'data', result
|
|
result = @db1.get(nil, '1234', nil, 0)
|
|
assert_equal 'data', result
|
|
result = @db1.get(nil, '8765', nil, 0)
|
|
assert_equal 'atad', result
|
|
result = @db1.get(nil, '4321', nil, 0)
|
|
assert_equal 'atad', result
|
|
|
|
@db1.close(0)
|
|
end
|
|
|
|
def test_aset_and_aget
|
|
@db['key'] = 'data'
|
|
result = @db.get(nil, 'key', nil, 0)
|
|
assert_equal 'data', result
|
|
result = @db['key']
|
|
assert_equal 'data', result
|
|
@db['key'] = 'data1'
|
|
result = @db['key']
|
|
assert_equal 'data1', result
|
|
end
|
|
|
|
def test_get_byteswapped
|
|
@db.get_byteswapped
|
|
end
|
|
|
|
def test_get_type
|
|
assert_equal Bdb::Db::BTREE, @db.get_type
|
|
end
|
|
|
|
def test_remove
|
|
@db1 = Bdb::Db.new
|
|
@db1.open(nil, File.join(File.dirname(__FILE__), 'tmp', 'other_test.db'), nil, Bdb::Db::BTREE, Bdb::DB_CREATE, 0)
|
|
@db1.close(0)
|
|
Bdb::Db.new.remove(File.join(File.dirname(__FILE__), 'tmp', 'other_test.db'), nil, 0)
|
|
assert !File.exists?(File.join(File.dirname(__FILE__), 'tmp', 'other_test.db'))
|
|
end
|
|
|
|
def test_key_range
|
|
10.times { |i| @db.put(nil, i.to_s, 'data', 0) }
|
|
@db.key_range(nil, '2', 0)
|
|
end
|
|
|
|
def test_rename
|
|
@db1 = Bdb::Db.new
|
|
@db1.open(nil, File.join(File.dirname(__FILE__), 'tmp', 'other_test.db'), nil, Bdb::Db::BTREE, Bdb::DB_CREATE, 0)
|
|
@db1.close(0)
|
|
assert Bdb::Db.new.rename(File.join(File.dirname(__FILE__), 'tmp', 'other_test.db'), nil, File.join(File.dirname(__FILE__), 'tmp', 'other2_test.db'), 0)
|
|
assert File.exists?(File.join(File.dirname(__FILE__), 'tmp', 'other2_test.db'))
|
|
end
|
|
|
|
def test_pagesize_get_and_set
|
|
@db1 = Bdb::Db.new
|
|
@db1.pagesize = 1024
|
|
assert_equal 1024, @db1.pagesize
|
|
end
|
|
|
|
def test_h_ffactor_get_and_set
|
|
@db1 = Bdb::Db.new
|
|
@db1.h_ffactor = 5
|
|
assert_equal 5, @db1.h_ffactor
|
|
end
|
|
|
|
def test_h_nelem_get_and_set
|
|
@db1 = Bdb::Db.new
|
|
@db1.h_nelem = 10_000
|
|
assert_equal 10_000, @db1.h_nelem
|
|
end
|
|
|
|
def test_sync
|
|
assert @db.sync
|
|
end
|
|
|
|
def test_truncate
|
|
@db.put(nil, 'key', 'data', 0)
|
|
result = @db.get(nil, 'key', nil, 0)
|
|
assert_equal 'data', result
|
|
@db.truncate(nil)
|
|
result = @db.get(nil, 'key', nil, 0)
|
|
assert_nil result
|
|
end
|
|
|
|
def test_compact
|
|
assert @db.compact(nil, nil, nil, nil, 0)
|
|
end
|
|
|
|
end
|