Sha256: acdc82cb3cf5fb043b01d0272f77a1364c46e22ab04e8e28231e1f6af0b6ac8d

Contents?: true

Size: 1.93 KB

Versions: 1

Compression:

Stored size: 1.93 KB

Contents

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mega-0.3.1 test/tc_dynamic_mixin.rb