require 'runit/testcase' require 'runit/cui/testrunner' require './renlock.rb' class TestRenLock < RUNIT::TestCase TEST_DIR = '__test_dir' def setup test_file = 'funi' unless FileTest.exist?(TEST_DIR) Dir.mkdir(TEST_DIR) end unless FileTest.exist?(TEST_DIR+'/'+test_file) File.open(TEST_DIR+'/'+test_file,"w"){|f| } end end def test_lock lock = RenLock.new(TEST_DIR, 'funi') lock.lock{ ## } lock.lock{ ## } end def test_lock_unlock lock = RenLock.new(TEST_DIR, 'funi') lock2 = RenLock.new(TEST_DIR, 'funi') lock.lock() assert_exception(RenLockError){ lock2.lock() } lock.unlock() lock2.lock() lock2.unlock() lock.lock(){ assert_exception(RenLockError){ lock2.lock() } } lock.unlock() end def test_lock_timeout lock = RenLock.new(TEST_DIR, 'funi') lock2 = RenLock.new(TEST_DIR, 'funi') lock2.timeout = 8 lock.lock() sleep 10 lock2.lock() lock.unlock() assert_exception(RenLockError){ lock.lock() } lock2.unlock() end def test_s_new lock = RenLock.new('hoge', 'funi') assert_instance_of(RenLock, lock) end def teardown() Dir.foreach(TEST_DIR){|file| next if file == '..' or file == '.' File.unlink(TEST_DIR+'/'+file) } Dir.unlink('__test_dir') end end if $0 == __FILE__ if ARGV.size == 0 suite = TestRenLock.suite else suite = RUNIT::TestSuite.new ARGV.each do |testmethod| suite.add_test(TestRenLock.new(testmethod)) end end RUNIT::CUI::TestRunner.run(suite) end