Show
Ignore:
Timestamp:
01/07/09 02:15:24 (4 years ago)
Author:
isaisstillalive
Message:
  • r28062を戻し、initとquitは複数定義できるようにする。親クラスのイベントを呼ぶ際にわざわざsuperを記述しなければならないのは冗長。initは定義した順に、quitは逆順に実行される。
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/starframe/test/starframe/test_initializable.rb

    r28062 r28066  
    2525  end 
    2626   
    27   def test_initializable_object_should_respond_to_init_event 
    28     assert_respond_to UnOverwriteInitializableObject.new, :_init 
    29   end 
    3027  def test_initializable_object_should_respond_to_init 
    3128    assert_respond_to UnOverwriteInitializableObject.new, :init 
    32   end 
    33   def test_quitializable_object_should_respond_to_quit_event 
    34     assert_respond_to UnOverwriteInitializableObject.new, :_quit 
    3529  end 
    3630  def test_quitializable_object_should_respond_to_quit 
     
    3832  end 
    3933   
    40   def test_initializable_object_init_should_return_nil 
     34  def test_initializable_object_should_have_inits 
     35    actual = UnOverwriteInitializableObject.instance_variable_get(:@_initializable_methods)[:init] 
     36    assert_equal [], actual 
     37  end 
     38  def test_quitializable_object_should_have_quits 
     39    actual = UnOverwriteInitializableObject.instance_variable_get(:@_initializable_methods)[:quit] 
     40    assert_equal [], actual 
     41  end 
     42   
     43  def test_initializable_object_init_should_return_self 
    4144    object = UnOverwriteInitializableObject.new 
    42     assert_nil object.init(1) 
     45    assert_equal object, object.init 
    4346  end 
    44   def test_quitializable_object_quit_should_return_nil 
     47  def test_quitializable_object_quit_should_return_self 
    4548    object = UnOverwriteInitializableObject.new 
    46     assert_nil object.quit 
     49    assert_equal object, object.quit 
    4750  end 
    4851   
     
    5053  class InitializableObject 
    5154    include StarFrame::Initializable 
     55    attr_reader :called 
     56    def initialize 
     57      @called = [] 
     58    end 
    5259     
    5360    init do |*args| 
    54       :init 
     61      @called << [:init1, args] 
     62    end 
     63    quit do 
     64      @called << :quit1 
    5565    end 
    5666     
     67    init do |*args| 
     68      @called << [:init2, args] 
     69    end 
    5770    quit do 
    58       :quit 
     71      @called << :quit2 
    5972    end 
    6073  end 
    6174   
    62   def test_init_should_return_block 
     75  def test_call_init_should_call_method_chain 
    6376    object = InitializableObject.new 
    64     assert_equal :init, object.init(1) 
     77    object.init :arg1, :arg2 
     78    assert_equal [[:init1, [:arg1, :arg2]], [:init2, [:arg1, :arg2]]], object.called 
    6579  end 
    66   def test_quit_should_return_block 
     80  def test_call_quit_should_call_method_chain 
    6781    object = InitializableObject.new 
    68     assert_equal :quit, object.quit 
     82    object.quit 
     83    assert_equal [:quit2, :quit1], object.called 
    6984  end 
    7085end