Sha256: 3a66ce8185b9ae647556d0eea69d8299c16c733fe6d3bb3a0cef04a302d80252

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

require 'test/unit'

require 'facet/object/super_send'
require 'facet/object/super_method'
require 'facet/object/supers'


# setup

class A
  def x; "A.x"; end
  def y; "A.y"; end
end

class B < A
  def x; "B.x" end
  def y; "B.y" end
end

class C < B
  def x; "C.x"; end
  def y; supers.x ; end
end


class Foo
  def foo
    return "Foo#foo"
  end
end

class Bar < Foo
  def foo
    return "Bar#foo"
  end
end


class TC_Object < Test::Unit::TestCase

  def setup
    @c = C.new
  end

  def test_supers
    assert_equal("B.x", @c.y)
    assert_equal("C.x", @c.x)
  end

  def test_super_method
    b = Bar.new
    assert_equal "Bar#foo", b.foo
    assert_equal "Bar#foo", b.instance_eval { super_method(Bar, :foo).call }
    assert_equal "Foo#foo", b.instance_eval { super_method(Foo, :foo).call }
  end

  def test_super_send
    b = Bar.new
    assert_equal "Bar#foo", b.foo
    assert_equal "Bar#foo", b.instance_eval { super_send(Bar, :foo) }
    assert_equal "Foo#foo", b.instance_eval { super_send(Foo, :foo) }
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
facets-0.7.0 test/object/tc_supers.rb
facets-0.7.1 test/object/tc_supers.rb
facets-0.7.2 test/object/tc_supers.rb