1 $:.unshift File.join(File.dirname(__FILE__), '../lib')
5 require 'rbot/registry'
10 module RegistryHashInterfaceTests
23 def test_getset # [] and []=
24 @reg['mykey'] = 'myvalue'
25 assert_equal('myvalue', @reg['mykey'],'expected set value')
27 assert_equal(42, @reg['mykey'], 'expected set value to overwrite')
29 assert_equal(5, @reg[23], 'expected integer key to respond')
31 assert_equal(42, @reg['mykey'], 'expected keys tobe case-sensitive')
32 assert_equal(45, @reg['myKey'], 'expected keys tobe case-sensitive')
33 assert_nil(@reg['not-there'])
36 def test_getset_persists
37 @reg['mykey'] = 'myvalue'
42 assert_equal('myvalue', @reg['mykey'], 'expected value to persist')
43 assert_equal(5, @reg[23], 'expected integer key to persist')
45 assert_equal(45, @reg['myKey'], 'expected keys tobe case-sensitive')
46 assert_nil(@reg['not-there'])
50 @reg['mykey1'] = 'myvalue1'
51 @reg['mykey2'] = 'myvalue2'
52 @reg['mykey3'] = 'myvalue3'
55 @reg.each do |key, value|
59 assert_equal(3, i, 'expected block to yield 3 times')
60 assert(resp.has_key? 'mykey1')
61 assert(resp.has_key? 'mykey2')
62 assert(resp.has_key? 'mykey3')
63 assert_equal('myvalue1', resp['mykey1'])
64 assert_equal('myvalue2', resp['mykey2'])
65 assert_equal('myvalue3', resp['mykey3'])
69 @reg['mykey1'] = 'myvalue1'
70 @reg['mykey2'] = 'myvalue2'
71 @reg['mykey3'] = 'myvalue3'
74 @reg.each_pair do |key, value|
78 assert_equal(3, i, 'expected block to yield 3 times')
79 assert(resp.has_key? 'mykey1')
80 assert(resp.has_key? 'mykey2')
81 assert(resp.has_key? 'mykey3')
82 assert_equal('myvalue1', resp['mykey1'])
83 assert_equal('myvalue2', resp['mykey2'])
84 assert_equal('myvalue3', resp['mykey3'])
88 @reg['mykey1'] = 'myvalue1'
89 @reg['mykey2'] = 'myvalue2'
90 @reg['mykey3'] = 'myvalue3'
93 @reg.each_key do |key|
97 assert_equal(3, i, 'expected block to yield 3 times')
98 assert(resp.include? 'mykey1')
99 assert(resp.include? 'mykey2')
100 assert(resp.include? 'mykey3')
104 @reg['mykey1'] = 'myvalue1'
105 @reg['mykey2'] = 'myvalue2'
106 @reg['mykey3'] = 'myvalue3'
109 @reg.each_value do |value|
113 assert_equal(3, i, 'expected block to yield 3 times')
114 assert(resp.include? 'myvalue1')
115 assert(resp.include? 'myvalue2')
116 assert(resp.include? 'myvalue3')
120 @reg['mykey1'] = 'myvalue1'
121 @reg['mykey2'] = 'myvalue2'
123 assert(@reg.has_key?('mykey1'))
124 assert(@reg.has_key?('mykey2'))
125 assert(@reg.has_key?(23))
126 assert_equal(false, @reg.has_key?('mykey3'))
127 assert_equal(false, @reg.has_key?(42))
131 @reg['mykey1'] = 'myvalue1'
133 assert(@reg.has_value?('myvalue1'))
134 assert(@reg.has_value?(5))
135 assert_equal(false, @reg.has_value?('myvalue3'))
136 assert_equal(false, @reg.has_value?(10))
140 @reg['mykey1'] = 'myvalue1'
142 assert_equal('mykey1', @reg.index('myvalue1'))
143 assert_equal('23', @reg.index(5))
147 @reg['mykey'] = 'myvalue'
148 assert_not_nil(@reg['mykey'])
150 assert_nil(@reg['mykey'])
153 def test_delete_return
154 @reg['mykey'] = 'myvalue'
155 assert_equal('myvalue', @reg.delete('mykey'), 'delete should return the deleted value')
156 assert_nil(@reg.delete('mykey'))
160 @reg['mykey1'] = 'myvalue1'
161 @reg['mykey2'] = 'myvalue2'
163 myhash['mykey1'] = 'myvalue1'
164 myhash['mykey2'] = 'myvalue2'
165 assert_equal(myhash.to_a, @reg.to_a)
169 @reg['mykey1'] = 'myvalue1'
170 @reg['mykey2'] = 'myvalue2'
172 myhash['mykey1'] = 'myvalue1'
173 myhash['mykey2'] = 'myvalue2'
174 assert_equal(myhash.to_hash, @reg.to_hash)
178 @reg['mykey1'] = 'myvalue1'
179 @reg['mykey2'] = 'myvalue2'
180 assert_not_nil(@reg['mykey1'])
182 assert_nil(@reg['mykey1'])
185 def test_clear_persists
186 @reg['mykey1'] = 'myvalue1'
187 @reg['mykey2'] = 'myvalue2'
188 assert_not_nil(@reg['mykey1'])
190 @reg = open(@tempdir)
191 assert_not_nil(@reg['mykey1'])
195 @reg['mykey1'] = 'myvalue1'
196 @reg['mykey2'] = 'myvalue2'
198 myhash['mykey1'] = 'myvalue1'
199 myhash['mykey2'] = 'myvalue2'
200 assert_equal(myhash.values, @reg.values)
204 @reg['mykey1'] = 'myvalue1'
205 @reg['mykey2'] = 'myvalue2'
206 assert_equal(2, @reg.length)
210 module TempRegistryTest
212 @tempdir = Dir.mktmpdir
213 puts ' setup registry test, using %s' % @tempdir
217 puts ' teardown registry test, delete %s' % @tempdir
218 FileUtils.remove_entry @tempdir
221 def open(path, filename='testcase')
222 @@factory ||= Irc::Bot::Registry.new(@format)
223 @reg = @@factory.create(path, filename)
227 class RegistryDBMTest < Test::Unit::TestCase
228 include TempRegistryTest
229 include RegistryHashInterfaceTests
234 @reg = open(@tempdir)
243 class RegistryTCTest < Test::Unit::TestCase
244 include TempRegistryTest
245 include RegistryHashInterfaceTests
250 @reg = open(@tempdir)
259 class RegistryDaybreakTest < Test::Unit::TestCase
260 include TempRegistryTest
261 include RegistryHashInterfaceTests
266 @reg = open(@tempdir)
276 class RegistrySqliteTest < Test::Unit::TestCase
277 include TempRegistryTest
278 include RegistryHashInterfaceTests
283 @reg = open(@tempdir)