require 'test/unit' require 'mega/dynamic_mixin' # fixture module D1 opt = local_parameters :name=>'Tom' define_method( :hello ) do "Hello from #{ opt[:name,self] }" end define_method( :goodbye ) do "Goodbye from #{ opt[:name,self] }" end end class C1 include D1, :name=>'George' end class C2 include D1 end module D2 include D1, :name=>'Norman' end class C3 include D2 end class C4 include D2, :name=>'Monkey' end module D3 include D2 attr_parameter :name=>'Bill' def hello "Hello from #{ name }" end end class C5 include D3, :name=>'Johnny' end class C6 include D3 end module D4 include D2 attr_parameters :options, :name=>'Kirk' def hello "Hello from #{ options(:name) }" end end class C7 include D4, :name=>'Bozo' end class C8 include D4 end # test class TC_Dynamic_Mixin < Test::Unit::TestCase def test_01 c = C1.new assert_equal( "Hello from George", c.hello ) assert_equal( "Goodbye from George", c.goodbye ) end def test_02 c = C2.new assert_equal( "Hello from Tom", c.hello ) assert_equal( "Goodbye from Tom", c.goodbye ) end def test_03 c = C3.new assert_equal( "Hello from Norman", c.hello ) assert_equal( "Goodbye from Norman", c.goodbye ) end def test_04 c = C4.new assert_equal( "Hello from Norman", c.hello ) assert_equal( "Goodbye from Norman", c.goodbye ) end def test_05 c = C5.new assert_equal( "Hello from Johnny", c.hello ) assert_equal( "Goodbye from Norman", c.goodbye ) end def test_06 c = C6.new assert_equal( "Hello from Bill", c.hello ) assert_equal( "Goodbye from Norman", c.goodbye ) end def test_07 c = C7.new assert_equal( "Hello from Bozo", c.hello ) assert_equal( "Goodbye from Norman", c.goodbye ) end def test_08 c = C8.new assert_equal( "Hello from Kirk", c.hello ) assert_equal( "Goodbye from Norman", c.goodbye ) end end