<NME> test.rb
<BEF> ADDFILE
<MSG> Added abstract

<DFF> @@ -0,0 +1,91 @@
+##
+## $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

Added abstract