Check types in Formula#==

Comparing two objects should not raise an exception, even if they have
different types.

The semantics of #== are now the same as #eql?, so make one an alias.
This commit is contained in:
Jack Nagel 2013-10-04 21:19:15 -05:00
parent 43f0c63135
commit 50c7c6bbd6
2 changed files with 8 additions and 5 deletions

View File

@ -292,12 +292,11 @@ class Formula
@pin.unpin
end
def == b
name == b.name
end
def eql? b
self == b and self.class.equal? b.class
def == other
instance_of?(other.class) && name == other.name
end
alias_method :eql?, :==
def hash
name.hash
end

View File

@ -124,6 +124,10 @@ class FormulaTests < Test::Unit::TestCase
assert !y.eql?(x)
end
def test_comparison_with_non_formula_objects_does_not_raise
assert_not_equal TestBall.new, Object.new
end
def test_class_naming
assert_equal 'ShellFm', Formula.class_s('shell.fm')
assert_equal 'Fooxx', Formula.class_s('foo++')