------art_6580_1717721.1213223499679
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Mon, Jun 9, 2008 at 11:54 AM, Mark Thomas <ruby / thomaszone.com> wrote:

>
> > It's basically the same:
> >
> >   x.should be < y
> >
> > James
>
> Thanks! Is this syntactic sugar for all be_xxx methods?


 No.

  1.should be > 0
will work, but say:

  1.should be_false > 0

will fail when RSpec tries to send #:0? to 1. One might say that this is an
rspec bug, but I'd say that 1.should be_false > 0 is nonsensical, so who
cares.


> I just noticed
> that I can omit the underscore in be_true also. I'm surprised I
> haven't noticed that in examples.


This is because

  x.should be y

is interpreted as

 x.should eql y

so it will succeed if x.eql?(y) returns a truthy value.

Also note that there's a difference between

x.should be_true
or
x.should be true
or
x.should eql true

and

x.should be

The first three will succeed only iff x true whereas the latter will
succeed iff x is any truthy value (i.e. anything except nil and false),
likewise

x.should_not be

will succeed iff x is a falsy value (i.e. nil or false)

-- 
Rick DeNatale

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

------art_6580_1717721.1213223499679--