Should equal in RubySpecs

I noticed this in core\thread\current_spec.rb.

it “returns the current thread” do
t = Thread.new { Thread.current }
t.value.should equal(t)
Thread.current.should_not equal(t.value)
end

Is this any different than writing “t.value.should == t”? Is either of
them the recommended way? Seems odd to support two ways of writing the
exact same thing.

Thanks,
Shri

require ‘mspec’
describe “equals” do
it “compares objects not values” do

a = "a"
b = "a"
c = a

a.should equal(c)
a.should_not equal(b)
a.should == b

end
end

I see. should== is value equality, and should+equal is reference
equality.

From: [email protected]
[mailto:[email protected]] On Behalf Of Michael
Letterle
Sent: Wednesday, January 07, 2009 11:26 AM
To: [email protected]
Subject: Re: [Ironruby-core] should equal in RubySpecs

require ‘mspec’
describe “equals” do
it “compares objects not values” do

a = "a"
b = "a"
c = a

a.should equal(c)
a.should_not equal(b)
a.should == b

end
end

On Wed, Jan 7, 2009 at 3:48 AM, Shri B.
<[email protected]mailto:[email protected]> wrote:

I noticed this in core\thread\current_spec.rb.

it “returns the current thread” do

t = Thread.new { Thread.current }

t.value.should equal(t)

Thread.current.should_not equal(t.value)

end

Is this any different than writing “t.value.should == t”? Is either of
them the recommended way? Seems odd to support two ways of writing the
exact same thing.

Thanks,

Shri

Along those lines, you have to remember that Ruby has 4 distinct ways to
define equality. #eql?, #equal?, #== and #===. This post covers it:
http://probablycorey.wordpress.com/2008/02/26/ruby-equality-equal-eql-and/

JD

From: [email protected]
[mailto:[email protected]] On Behalf Of Michael
Letterle
Sent: Wednesday, January 07, 2009 11:26 AM
To: [email protected]
Subject: Re: [Ironruby-core] should equal in RubySpecs

require ‘mspec’
describe “equals” do
it “compares objects not values” do

a = "a"
b = "a"
c = a

a.should equal(c)
a.should_not equal(b)
a.should == b

end
end

On Wed, Jan 7, 2009 at 3:48 AM, Shri B.
<[email protected]mailto:[email protected]> wrote:

I noticed this in core\thread\current_spec.rb.

it “returns the current thread” do

t = Thread.new { Thread.current }

t.value.should equal(t)

Thread.current.should_not equal(t.value)

end

Is this any different than writing “t.value.should == t”? Is either of
them the recommended way? Seems odd to support two ways of writing the
exact same thing.

Thanks,

Shri