[rspec-users] "should_not ==" vs "should !="

Rick DeNatale rick.denatale at gmail.com
Sun Jan 20 23:57:46 EST 2008


On Jan 20, 2008 8:01 PM, Alex Satrapa <grail at goldweb.com.au> wrote:
> On 19/01/2008, at 17:36 , David Chelimsky wrote:
>
> > When you say 5 == 3, what that is really saying is 5.==(3), which is
> > how we're able to support 5.should == 3 (becomes 5.should.==(3)).
>
> Would it be true to say that the reason "5.should != 3" won't work is
> that somewhere inside Ruby the x != y comparison is remapped to !(x
> == y), and thus the "5.should != 3" is remapped to "not (5.should.==
> 3)", with rspec generating a failure when "should" sees false coming
> back from the "==" method?
>
> Or am I barking up the wrong tree and potentially misleading dozens
> of programmers down the garden path?

I'm 99 44/100% sure that you have it right.  The expression x != y is
syntactic sugar for !(x == y) much like x += y is syntactic sugar for
x = (x +y)

The parser turns these into an internal representation (abstract
syntax tree for 1.8, byte-codes for 1.9) which is identical to the
second form.


-- 
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/


More information about the rspec-users mailing list