module RIMS::Test::KeyValueStoreTestUtility

Public Instance Methods

db_close() click to toggle source
# File lib/rims/test.rb, line 246
def db_close
  @db.close
end
db_closed?() click to toggle source
# File lib/rims/test.rb, line 250
def db_closed?
  @db.closed?
end
db_closed_delete_error() click to toggle source
# File lib/rims/test.rb, line 281
def db_closed_delete_error
  db_closed_error
end
db_closed_each_key_error() click to toggle source
# File lib/rims/test.rb, line 289
def db_closed_each_key_error
  db_closed_error
end
db_closed_each_pair_error() click to toggle source
# File lib/rims/test.rb, line 297
def db_closed_each_pair_error
  db_closed_error
end
db_closed_each_value_error() click to toggle source
# File lib/rims/test.rb, line 293
def db_closed_each_value_error
  db_closed_error
end
db_closed_error() click to toggle source
# File lib/rims/test.rb, line 269
def db_closed_error
  RuntimeError
end
db_closed_fetch_error() click to toggle source
# File lib/rims/test.rb, line 273
def db_closed_fetch_error
  db_closed_error
end
db_closed_key_error() click to toggle source
# File lib/rims/test.rb, line 285
def db_closed_key_error
  db_closed_error
end
db_closed_store_error() click to toggle source
# File lib/rims/test.rb, line 277
def db_closed_store_error
  db_closed_error
end
db_each_key() { |key| ... } click to toggle source
# File lib/rims/test.rb, line 262
def db_each_key
  return enum_for(:db_each_key) unless block_given?
  @db.each_key do |key|
    yield(key)
  end
end
db_fetch(key) click to toggle source
# File lib/rims/test.rb, line 254
def db_fetch(key)
  @db[key]
end
db_key?(key) click to toggle source
# File lib/rims/test.rb, line 258
def db_key?(key)
  @db.key? key
end
make_key_value_store() click to toggle source
# File lib/rims/test.rb, line 242
def make_key_value_store
  raise NotImplementedError, 'not implemented.'
end
open_database() click to toggle source
# File lib/rims/test.rb, line 238
def open_database
  raise NotImplementedError, "not implemented to open `#{@name}'"
end
setup() click to toggle source
# File lib/rims/test.rb, line 301
def setup
  @base_dir = 'kvs_test_dir'
  FileUtils.mkdir_p(@base_dir)
  @name = File.join(@base_dir, "kvs_test.db.#{$$}")

  @db = open_database
  @kvs = make_key_value_store
end
teardown() click to toggle source
# File lib/rims/test.rb, line 310
def teardown
  db_close unless db_closed?
  FileUtils.rm_rf(@base_dir)
end
test_close() click to toggle source
# File lib/rims/test.rb, line 397
def test_close
  @kvs.close
  assert_equal(true, db_closed?)

  # closed exception
  assert_raise(db_closed_fetch_error) { @kvs['foo'] }
  assert_raise(db_closed_store_error) { @kvs['foo'] = 'apple' }
  assert_raise(db_closed_delete_error) { @kvs.delete('foo') }
  assert_raise(db_closed_key_error) { @kvs.key? 'foo' }
  assert_raise(db_closed_each_key_error) { @kvs.each_key.to_a }
  assert_raise(db_closed_each_value_error) { @kvs.each_value.to_a }
  assert_raise(db_closed_each_pair_error) { @kvs.each_pair.to_a }
end
test_delete() click to toggle source
# File lib/rims/test.rb, line 329
def test_delete
  assert_nil(@kvs.delete('foo'))

  @kvs['foo'] = 'apple'
  assert_equal('apple', @kvs.delete('foo'))

  assert_nil(db_fetch('foo'))
  assert_nil(@kvs['foo'])
end
test_each_key() click to toggle source
# File lib/rims/test.rb, line 357
def test_each_key
  assert_equal(%w[], db_each_key.to_a)
  assert_equal(%w[], @kvs.each_key.to_a)

  @kvs['foo'] = 'apple'
  assert_equal(%w[ foo ], db_each_key.to_a)
  assert_equal(%w[ foo ], @kvs.each_key.to_a)
  assert_equal(%w[ apple ], @kvs.each_value.to_a)
  assert_equal([ %w[ foo apple ] ], @kvs.each_pair.to_a)

  @kvs['bar'] = 'banana'
  assert_equal(%w[ foo bar ].sort, db_each_key.sort)
  assert_equal(%w[ foo bar ].sort, @kvs.each_key.sort)
  assert_equal(%w[ apple banana ].sort, @kvs.each_value.sort)
  assert_equal([ %w[ foo apple ], %w[ bar banana ] ].sort, @kvs.each_pair.sort)

  @kvs['baz'] = 'orange'
  assert_equal(%w[ foo bar baz ].sort, db_each_key.sort)
  assert_equal(%w[ foo bar baz ].sort, @kvs.each_key.sort)
  assert_equal(%w[ apple banana orange ].sort, @kvs.each_value.sort)
  assert_equal([ %w[ foo apple ], %w[ bar banana ], %w[ baz orange ] ].sort, @kvs.each_pair.sort)

  @kvs.delete('bar')
  assert_equal(%w[ foo baz ].sort, db_each_key.sort)
  assert_equal(%w[ foo baz ].sort, @kvs.each_key.sort)
  assert_equal(%w[ apple orange ].sort, @kvs.each_value.sort)
  assert_equal([ %w[ foo apple ], %w[ baz orange ] ].sort, @kvs.each_pair.sort)

  # update
  @kvs['baz'] = 'melon'
  assert_equal(%w[ foo baz ].sort, db_each_key.sort)
  assert_equal(%w[ foo baz ].sort, @kvs.each_key.sort)
  assert_equal(%w[ apple melon ].sort, @kvs.each_value.sort)
  assert_equal([ %w[ foo apple ], %w[ baz melon ] ].sort, @kvs.each_pair.sort)
end
test_key?() click to toggle source
# File lib/rims/test.rb, line 339
def test_key?
  assert_equal(false, (db_key? 'foo'))
  assert_equal(false, (@kvs.key? 'foo'))

  @kvs['foo'] = 'apple'
  assert_equal(true, (db_key? 'foo'))
  assert_equal(true, (@kvs.key? 'foo'))

  # update
  @kvs['foo'] = 'banana'
  assert_equal(true, (db_key? 'foo'))
  assert_equal(true, (@kvs.key? 'foo'))

  @kvs.delete('foo')
  assert_equal(false, (db_key? 'foo'))
  assert_equal(false, (@kvs.key? 'foo'))
end
test_store_fetch() click to toggle source
# File lib/rims/test.rb, line 315
def test_store_fetch
  assert_nil(db_fetch('foo'))
  assert_nil(@kvs['foo'])

  assert_equal('apple', (@kvs['foo'] = 'apple'))
  assert_equal('apple', db_fetch('foo'))
  assert_equal('apple', @kvs['foo'])

  # update
  assert_equal('banana', (@kvs['foo'] = 'banana'))
  assert_equal('banana', db_fetch('foo'))
  assert_equal('banana', @kvs['foo'])
end
test_sync() click to toggle source
# File lib/rims/test.rb, line 393
def test_sync
  @kvs.sync
end