Should equal in RubySpecs


#1

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


#2

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


#3

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

From: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] On Behalf Of Michael
Letterle
Sent: Wednesday, January 07, 2009 11:26 AM
To: removed_email_address@domain.invalid
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.
<removed_email_address@domain.invalidmailto:removed_email_address@domain.invalid> 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


#4

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: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] On Behalf Of Michael
Letterle
Sent: Wednesday, January 07, 2009 11:26 AM
To: removed_email_address@domain.invalid
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.
<removed_email_address@domain.invalidmailto:removed_email_address@domain.invalid> 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