summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMatthias H <apoc@sixserv.org>2014-03-06 12:47:09 +0100
committerMatthias H <apoc@sixserv.org>2014-03-06 12:47:09 +0100
commit6b36c31037276f3c5a511e6e568481c8446a6fab (patch)
tree210d11bd598e9d589b5650d907bf9a68f9d5e1c5 /test
parentbaf92378d7511983ae24cc41c7e9a86e73923bf4 (diff)
[registry] added a testcase
Diffstat (limited to 'test')
-rw-r--r--test/test_registry.rb291
1 files changed, 291 insertions, 0 deletions
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
+