]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - test/test_registry.rb
test: small changes and fixes to existing tests
[user/henk/code/ruby/rbot.git] / test / test_registry.rb
index a7d45457570e24115f7c4e43c82ce23c6b482d42..1f25f89d3a087de5bfb0492640deced705602386 100644 (file)
@@ -1,5 +1,14 @@
 $:.unshift File.join(File.dirname(__FILE__), '../lib')
 
+module Irc
+class Bot
+  module Config
+    @@datadir = File.expand_path(File.dirname($0) + '/../data/rbot')
+    @@coredir = File.expand_path(File.dirname($0) + '/../lib/rbot/core') 
+  end
+end
+end
+
 require 'test/unit'
 require 'rbot/ircbot'
 require 'rbot/registry'
@@ -7,8 +16,31 @@ require 'rbot/registry'
 require 'pp'
 require 'tmpdir'
 
+class FooObj
+  attr_reader :bar
+  def initialize(bar)
+    @bar = bar
+  end
+end
+
 module RegistryHashInterfaceTests
+  def test_object
+    @reg['store'] = {
+      :my_obj => FooObj.new(42)
+    }
+
+    assert_equal(42, @reg['store'][:my_obj].bar)
+
+    @reg.close
+    @reg = open(@tempdir)
+
+    assert_equal(42, @reg['store'][:my_obj].bar)
+  end
+
   def test_default
+    @reg.set_default(42)
+    assert_equal(42, @reg['not-here'])
+    assert_equal(42, @reg.default)
   end
 
   def test_flush
@@ -35,9 +67,11 @@ module RegistryHashInterfaceTests
   end
 
   def test_optimize
+    @reg.optimize
   end
 
   def test_close
+    @reg.close
   end
 
   def test_getset # [] and []=
@@ -227,83 +261,80 @@ module RegistryHashInterfaceTests
   end
 end
 
-module TempRegistryTest
-  def setup_temp
+module RegistryTestModule
+  def setup
     @tempdir = Dir.mktmpdir
+    @reg = open(@tempdir)
   end
 
-  def teardown_temp
+  def teardown
+    @reg.close
     FileUtils.remove_entry @tempdir
   end
 
   def open(path, filename='testcase')
-    @@factory ||= Irc::Bot::Registry.new(@format)
-    @reg = @@factory.create(path, filename)
+    puts 'open type: ' + @format
+    @registry_class.new(File.join(path, filename))
   end
 end
 
 class RegistryDBMTest < Test::Unit::TestCase
-  include TempRegistryTest
+  include RegistryTestModule
   include RegistryHashInterfaceTests
 
-  def setup
-    setup_temp
+  def initialize(o)
+    super o
     @format = 'dbm'
-    @reg = open(@tempdir)
-  end
-
-  def teardown
-    @reg.close
-    teardown_temp
+    Irc::Bot::Registry.new(@format)
+    @registry_class = Irc::Bot::Registry::DBMAccessor
   end
 end
 
 class RegistryTCTest < Test::Unit::TestCase
-  include TempRegistryTest
+  include RegistryTestModule
   include RegistryHashInterfaceTests
 
-  def setup
-    setup_temp
+  def initialize(o)
+    super o
     @format = 'tc'
-    @reg = open(@tempdir)
-  end
-
-  def teardown
-    @reg.close
-    teardown_temp
+    Irc::Bot::Registry.new(@format)
+    @registry_class = Irc::Bot::Registry::TokyoCabinetAccessor
   end
 end
 
-class RegistryDaybreakTest < Test::Unit::TestCase
-  include TempRegistryTest
-  include RegistryHashInterfaceTests
-
-  def setup
-    setup_temp
-    @format = 'daybreak'
-    @reg = open(@tempdir)
-  end
-
-  def teardown
-    @reg.close
-    teardown_temp
+begin
+  require 'daybreak'
+  class RegistryDaybreakTest < Test::Unit::TestCase
+    include RegistryTestModule
+    include RegistryHashInterfaceTests
+
+    def initialize(o)
+      super o
+      @format = 'daybreak'
+      Irc::Bot::Registry.new(@format)
+      @registry_class = Irc::Bot::Registry::DaybreakAccessor
+    end
   end
-end
+rescue Exception; end
 
+begin
+  require 'sqlite'
+  class RegistrySqliteTest < Test::Unit::TestCase
+    include RegistryTestModule
+    include RegistryHashInterfaceTests
 
-class RegistrySqliteTest < Test::Unit::TestCase
-  include TempRegistryTest
-  include RegistryHashInterfaceTests
-
-  def setup
-    setup_temp
-    @format = 'sqlite'
-    @reg = open(@tempdir)
-  end
+    def initialize(o)
+      super o
+      @format = 'sqlite'
+      Irc::Bot::Registry.new(@format)
+      @registry_class = Irc::Bot::Registry::SqliteAccessor
+    end
 
-  def teardown
-    @reg.close
-    teardown_temp
+    def test_duplicate_keys
+      @reg['foo'] = 1
+      @reg['foo'] = 2
+      res = @reg.registry.execute('select key from data')
+      assert res.length == 1
+    end
   end
-end
-
+rescue Exception; end