92 lines
1.6 KiB
Ruby
92 lines
1.6 KiB
Ruby
|
##
|
||
|
## $Rev: 1 $
|
||
|
## $Release: 1.0.0 $
|
||
|
## copyright(c) 2006 kuwata-lab.com all rights reserved.
|
||
|
##
|
||
|
|
||
|
testdir = File.dirname(File.expand_path(__FILE__))
|
||
|
libdir = File.dirname(testdir) + "/lib"
|
||
|
$: << libdir
|
||
|
|
||
|
|
||
|
require 'test/unit'
|
||
|
require 'abstract'
|
||
|
|
||
|
|
||
|
class Foo
|
||
|
abstract_method "arg1, arg2=''", :m1, :m2, :m3
|
||
|
end
|
||
|
|
||
|
|
||
|
class Bar
|
||
|
def m1(arg1, arg2='')
|
||
|
not_implemented
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
|
||
|
class AbstractTest < Test::Unit::TestCase
|
||
|
|
||
|
|
||
|
def _test(obj)
|
||
|
assert_raise(NotImplementedError) do
|
||
|
begin
|
||
|
obj = Foo.new
|
||
|
obj.m1 'a'
|
||
|
rescue => ex
|
||
|
linenum = (ex.backtrace[0] =~ /:(\d+)/) && $1
|
||
|
raise ex
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
def test_abstract_method1
|
||
|
obj = Foo.new
|
||
|
assert_raise(NotImplementedError) { obj.m1 'a' }
|
||
|
assert_raise(NotImplementedError) { obj.m2 'a', 'b' }
|
||
|
end
|
||
|
|
||
|
|
||
|
def test_abstract_method2
|
||
|
begin
|
||
|
obj = Foo.new
|
||
|
linenum = __LINE__; obj.m1 'a'
|
||
|
rescue NotImplementedError => ex
|
||
|
actual_linenum = (ex.backtrace[0] =~ /:(\d+)/) && $1.to_i
|
||
|
end
|
||
|
assert_equal linenum, actual_linenum
|
||
|
end
|
||
|
|
||
|
|
||
|
def test_not_implemented1
|
||
|
obj = Bar.new
|
||
|
assert_raise(NotImplementedError) { obj.m1 123 }
|
||
|
end
|
||
|
|
||
|
|
||
|
def test_not_implemented2
|
||
|
begin
|
||
|
obj = Bar.new
|
||
|
linenum = __LINE__; obj.m1 'a'
|
||
|
rescue NotImplementedError => ex
|
||
|
actual_linenum = (ex.backtrace[0] =~ /:(\d+)/) && $1.to_i
|
||
|
end
|
||
|
assert_equal linenum, actual_linenum
|
||
|
end
|
||
|
|
||
|
|
||
|
def test_not_implemented3
|
||
|
begin
|
||
|
obj = Bar.new
|
||
|
obj.not_implemented
|
||
|
rescue Exception => ex
|
||
|
assert_instance_of(NoMethodError, ex)
|
||
|
assert_match(/private method/, ex.message)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
end
|