From: Matthias H Date: Thu, 6 Mar 2014 11:47:09 +0000 (+0100) Subject: [registry] added a testcase X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=6b36c31037276f3c5a511e6e568481c8446a6fab;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git [registry] added a testcase --- diff --git a/test/test_registry.rb b/test/test_registry.rb new file mode 100644 index 00000000..76ee2b22 --- /dev/null +++ b/test/test_registry.rb @@ -0,0 +1,291 @@ +$:.unshift File.join(File.dirname(__FILE__), '../lib') + +require 'test/unit' +require 'rbot/ircbot' +require 'rbot/registry' + +require 'pp' +require 'tmpdir' + +module RegistryHashInterfaceTests + def test_default + end + + def test_flush + end + + def test_optimize + end + + def test_close + end + + def test_getset # [] and []= + @reg['mykey'] = 'myvalue' + assert_equal('myvalue', @reg['mykey'],'expected set value') + @reg['mykey'] = 42 + assert_equal(42, @reg['mykey'], 'expected set value to overwrite') + @reg[23] = 5 + assert_equal(5, @reg[23], 'expected integer key to respond') + @reg['myKey'] = 45 + assert_equal(42, @reg['mykey'], 'expected keys tobe case-sensitive') + assert_equal(45, @reg['myKey'], 'expected keys tobe case-sensitive') + assert_nil(@reg['not-there']) + end + + def test_getset_persists + @reg['mykey'] = 'myvalue' + @reg['myKey'] = 45 + @reg[23] = 5 + @reg.close + @reg = open(@tempdir) + assert_equal('myvalue', @reg['mykey'], 'expected value to persist') + assert_equal(5, @reg[23], 'expected integer key to persist') + + assert_equal(45, @reg['myKey'], 'expected keys tobe case-sensitive') + assert_nil(@reg['not-there']) + end + + def test_each + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + @reg['mykey3'] = 'myvalue3' + resp = {} + i = 0 + @reg.each do |key, value| + resp[key] = value + i += 1 + end + assert_equal(3, i, 'expected block to yield 3 times') + assert(resp.has_key? 'mykey1') + assert(resp.has_key? 'mykey2') + assert(resp.has_key? 'mykey3') + assert_equal('myvalue1', resp['mykey1']) + assert_equal('myvalue2', resp['mykey2']) + assert_equal('myvalue3', resp['mykey3']) + end + + def test_each_pair + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + @reg['mykey3'] = 'myvalue3' + resp = {} + i = 0 + @reg.each_pair do |key, value| + resp[key] = value + i += 1 + end + assert_equal(3, i, 'expected block to yield 3 times') + assert(resp.has_key? 'mykey1') + assert(resp.has_key? 'mykey2') + assert(resp.has_key? 'mykey3') + assert_equal('myvalue1', resp['mykey1']) + assert_equal('myvalue2', resp['mykey2']) + assert_equal('myvalue3', resp['mykey3']) + end + + def test_each_key + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + @reg['mykey3'] = 'myvalue3' + resp = [] + i = 0 + @reg.each_key do |key| + resp << key + i += 1 + end + assert_equal(3, i, 'expected block to yield 3 times') + assert(resp.include? 'mykey1') + assert(resp.include? 'mykey2') + assert(resp.include? 'mykey3') + end + + def test_each_value + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + @reg['mykey3'] = 'myvalue3' + resp = [] + i = 0 + @reg.each_value do |value| + resp << value + i += 1 + end + assert_equal(3, i, 'expected block to yield 3 times') + assert(resp.include? 'myvalue1') + assert(resp.include? 'myvalue2') + assert(resp.include? 'myvalue3') + end + + def test_has_key + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + @reg[23] = 5 + assert(@reg.has_key?('mykey1')) + assert(@reg.has_key?('mykey2')) + assert(@reg.has_key?(23)) + assert_equal(false, @reg.has_key?('mykey3')) + assert_equal(false, @reg.has_key?(42)) + end + + def test_has_value + @reg['mykey1'] = 'myvalue1' + @reg[23] = 5 + assert(@reg.has_value?('myvalue1')) + assert(@reg.has_value?(5)) + assert_equal(false, @reg.has_value?('myvalue3')) + assert_equal(false, @reg.has_value?(10)) + end + + def test_index + @reg['mykey1'] = 'myvalue1' + @reg[23] = 5 + assert_equal('mykey1', @reg.index('myvalue1')) + assert_equal('23', @reg.index(5)) + end + + def test_delete + @reg['mykey'] = 'myvalue' + assert_not_nil(@reg['mykey']) + @reg.delete('mykey') + assert_nil(@reg['mykey']) + end + + def test_delete_return + @reg['mykey'] = 'myvalue' + assert_equal('myvalue', @reg.delete('mykey'), 'delete should return the deleted value') + assert_nil(@reg.delete('mykey')) + end + + def test_to_a + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + myhash = {} + myhash['mykey1'] = 'myvalue1' + myhash['mykey2'] = 'myvalue2' + assert_equal(myhash.to_a, @reg.to_a) + end + + def test_to_hash + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + myhash = {} + myhash['mykey1'] = 'myvalue1' + myhash['mykey2'] = 'myvalue2' + assert_equal(myhash.to_hash, @reg.to_hash) + end + + def test_clear + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + assert_not_nil(@reg['mykey1']) + @reg.clear + assert_nil(@reg['mykey1']) + end + + def test_clear_persists + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + assert_not_nil(@reg['mykey1']) + @reg.close + @reg = open(@tempdir) + assert_not_nil(@reg['mykey1']) + end + + def test_values + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + myhash = {} + myhash['mykey1'] = 'myvalue1' + myhash['mykey2'] = 'myvalue2' + assert_equal(myhash.values, @reg.values) + end + + def test_length + @reg['mykey1'] = 'myvalue1' + @reg['mykey2'] = 'myvalue2' + assert_equal(2, @reg.length) + end +end + +module TempRegistryTest + def setup_temp + @tempdir = Dir.mktmpdir + puts ' setup registry test, using %s' % @tempdir + end + + def teardown_temp + puts ' teardown registry test, delete %s' % @tempdir + FileUtils.remove_entry @tempdir + end + + def open(path, filename='testcase') + @@factory ||= Irc::Bot::Registry.new(@format) + @reg = @@factory.create(path, filename) + end +end + +class RegistryDBMTest < Test::Unit::TestCase + include TempRegistryTest + include RegistryHashInterfaceTests + + def setup + setup_temp + @format = 'dbm' + @reg = open(@tempdir) + end + + def teardown + @reg.close + teardown_temp + end +end + +class RegistryTCTest < Test::Unit::TestCase + include TempRegistryTest + include RegistryHashInterfaceTests + + def setup + setup_temp + @format = 'tc' + @reg = open(@tempdir) + end + + def teardown + @reg.close + teardown_temp + end +end + +class RegistryDaybreakTest < Test::Unit::TestCase + include TempRegistryTest + include RegistryHashInterfaceTests + + def setup + setup_temp + @format = 'sqlite' + @reg = open(@tempdir) + end + + def teardown + @reg.close + teardown_temp + end +end + + +class RegistrySqliteTest < Test::Unit::TestCase + include TempRegistryTest + include RegistryHashInterfaceTests + + def setup + setup_temp + @format = 'sqlite' + @reg = open(@tempdir) + end + + def teardown + @reg.close + teardown_temp + end +end +