Bug #6408 » fix.patch
| lib/delegate.rb | ||
|---|---|---|
|
self.__getobj__ == obj
|
||
|
end
|
||
|
def eql?(obj)
|
||
|
if obj.equal? self
|
||
|
__getobj__.eql? obj.__getobj__
|
||
|
else
|
||
|
__getobj__.eql?(obj)
|
||
|
end
|
||
|
end
|
||
|
def <=>(obj)
|
||
|
if obj.equal? self
|
||
|
__getobj__ <=> obj.__getobj__
|
||
|
else
|
||
|
__getobj__ <=> obj
|
||
|
end
|
||
|
end
|
||
|
#
|
||
|
# Returns true if two objects are not considered of equal value.
|
||
|
#
|
||
| test/test_delegate.rb | ||
|---|---|---|
|
assert_raise(NoMethodError, '[ruby-dev:40314]#5') {d.send(:delegate_test_private)}
|
||
|
end
|
||
|
end
|
||
|
class WidgetWrapperTests < MiniTest::Unit::TestCase
|
||
|
class Widget
|
||
|
end
|
||
|
class WidgetWrapper < DelegateClass(Widget)
|
||
|
end
|
||
|
attr_reader :widget, :wrapper
|
||
|
def setup
|
||
|
@widget = Widget.new
|
||
|
@wrapper = WidgetWrapper.new @widget
|
||
|
end
|
||
|
def test_equal_operator
|
||
|
assert_equal(widget == widget, wrapper == wrapper)
|
||
|
end
|
||
|
def test_equal
|
||
|
assert_equal(widget.equal?(widget), wrapper.equal?(wrapper))
|
||
|
end
|
||
|
def test_comparison
|
||
|
assert_equal(widget <=> widget, wrapper <=> wrapper)
|
||
|
end
|
||
|
def test_eql
|
||
|
assert_equal(widget.eql?(widget), wrapper.eql?(wrapper))
|
||
|
end
|
||
|
end
|
||