Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > boolean and logging

Reply
Thread Tools

boolean and logging

 
 
testautomated6@googlemail.com
Guest
Posts: n/a
 
      03-28-2008
Hi,

I use Ruby and Watir

I have a method:

def does_the_html_include(target)
puts "HTML text of #{target} is being verified"
if target.kind_of? String
return $browser.text.include?(target)
elsif target.kind_of? Regexp
return $browser.text.match(target)
end
end


I wrap this up in a logger

def test_results(result, *msg)
#make true explicit, everything else I am seeing as a failure
if result == true
test_status = @test.add_element 'teststatus'
test_status.text = 'PASS'
else
fail = @test.add_element 'teststatus'
fail.text = 'FAIL'
fail_msg = @test.add_element 'failmessage'
fail_msg.text = msg
end
end


However, when I don't want HTML text to appear, eg: an error. I want
to do something better than this

boolean = does_the_html_include('You appear to have an active
account')
$test.test_results(!boolean, 'already have registered account')

Any ideas?

Cheers

Aidy
 
Reply With Quote
 
 
 
 
Robert Klemme
Guest
Posts: n/a
 
      03-28-2008
On 28.03.2008 15:58, http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
> Hi,
>
> I use Ruby and Watir
>
> I have a method:
>
> def does_the_html_include(target)
> puts "HTML text of #{target} is being verified"
> if target.kind_of? String
> return $browser.text.include?(target)
> elsif target.kind_of? Regexp
> return $browser.text.match(target)
> end
> end
>
>
> I wrap this up in a logger
>
> def test_results(result, *msg)
> #make true explicit, everything else I am seeing as a failure
> if result == true


This is a very bad idea, as only false and nil are false. Your code
above will especially break with the test because the regexp match will
either return nil or a MatchData object - which both will make "result
== true" false.

> test_status = @test.add_element 'teststatus'
> test_status.text = 'PASS'
> else
> fail = @test.add_element 'teststatus'
> fail.text = 'FAIL'
> fail_msg = @test.add_element 'failmessage'
> fail_msg.text = msg
> end
> end
>
>
> However, when I don't want HTML text to appear, eg: an error. I want
> to do something better than this
>
> boolean = does_the_html_include('You appear to have an active
> account')
> $test.test_results(!boolean, 'already have registered account')


I am not sure what exactly it is that you want to improve. Do you
dislike the local variable?

def test_results(msg)
if yield
# test ok
else
# not ok
end
end

test_results "foo" { does_the_html_include('You appear to have an active
account') }

Cheers

robert
 
Reply With Quote
 
 
 
 
testautomated6@googlemail.com
Guest
Posts: n/a
 
      03-31-2008
On Mar 28, 9:28 am, Robert Klemme <(E-Mail Removed)> wrote:
> On 28.03.2008 15:58, (E-Mail Removed) wrote:
>
> > Hi,

>
> > I use Ruby and Watir

>
> > I have a method:

>
> > def does_the_html_include(target)
> > puts "HTML text of #{target} is being verified"
> > if target.kind_of? String
> > return $browser.text.include?(target)
> > elsif target.kind_of? Regexp
> > return $browser.text.match(target)
> > end
> > end

>
> > I wrap this up in a logger

>
> > def test_results(result, *msg)
> > #make true explicit, everything else I am seeing as a failure
> > if result == true

>
> This is a very bad idea, as only false and nil are false. Your code
> above will especially break with the test because the regexp match will
> either return nil or a MatchData object - which both will make "result
> == true" false.
>


Good point.

>
> > test_status = @test.add_element 'teststatus'
> > test_status.text = 'PASS'
> > else
> > fail = @test.add_element 'teststatus'
> > fail.text = 'FAIL'
> > fail_msg = @test.add_element 'failmessage'
> > fail_msg.text = msg
> > end
> > end

>
> > However, when I don't want HTML text to appear, eg: an error. I want
> > to do something better than this

>
> > boolean = does_the_html_include('You appear to have an active
> > account')
> > $test.test_results(!boolean, 'already have registered account')

>
> I am not sure what exactly it is that you want to improve. Do you
> dislike the local variable?


Yes. I am writing two lines when I should be writing one.

>
> def test_results(msg)
> if yield
> # test ok
> else
> # not ok
> end
> end
>
> test_results "foo" { does_the_html_include('You appear to have an active
> account') }
>


Could you give a brief explanation of this code please?

Aidy
 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      03-31-2008
2008/3/31, (E-Mail Removed) <(E-Mail Removed)>:
> On Mar 28, 9:28 am, Robert Klemme <(E-Mail Removed)> wrote:
>
> > On 28.03.2008 15:58, (E-Mail Removed) wrote:
> >
> > > Hi,

> >
> > > I use Ruby and Watir

> >
> > > I have a method:

> >
> > > def does_the_html_include(target)
> > > puts "HTML text of #{target} is being verified"
> > > if target.kind_of? String
> > > return $browser.text.include?(target)
> > > elsif target.kind_of? Regexp
> > > return $browser.text.match(target)
> > > end
> > > end

> >
> > > I wrap this up in a logger

> >
> > > def test_results(result, *msg)
> > > #make true explicit, everything else I am seeing as a failure
> > > if result == true

> >
> > This is a very bad idea, as only false and nil are false. Your code
> > above will especially break with the test because the regexp match will
> > either return nil or a MatchData object - which both will make "result
> > == true" false.
> >

>
>
> Good point.
>
>
> >
> > > test_status = @test.add_element 'teststatus'
> > > test_status.text = 'PASS'
> > > else
> > > fail = @test.add_element 'teststatus'
> > > fail.text = 'FAIL'
> > > fail_msg = @test.add_element 'failmessage'
> > > fail_msg.text = msg
> > > end
> > > end

> >
> > > However, when I don't want HTML text to appear, eg: an error. I want
> > > to do something better than this

> >
> > > boolean = does_the_html_include('You appear to have an active
> > > account')
> > > $test.test_results(!boolean, 'already have registered account')

> >
> > I am not sure what exactly it is that you want to improve. Do you
> > dislike the local variable?

>
> Yes. I am writing two lines when I should be writing one.


Well, if that's all that bothers you - you can easily inline it:

$test.test_results(!does_the_html_include('You..') , 'already have
registered account')

> > def test_results(msg)
> > if yield
> > # test ok
> > else
> > # not ok
> > end
> > end
> >
> > test_results "foo" { does_the_html_include('You appear to have an active
> > account') }

>
> Could you give a brief explanation of this code please?


The method invokes the block and uses the result to determine what to
do (if or else).

Does that help?

Kind regards

robert

--
use.inject do |as, often| as.you_can - without end

 
Reply With Quote
 
aidy
Guest
Posts: n/a
 
      04-01-2008
On 31 Mar, 16:56, Robert Klemme <(E-Mail Removed)> wrote:

> The method invokes the block and uses the result to determine what to
> do (if or else).
>
> Does that help?
>

Surely does. Thanks Robert, your a linguist.

Aidy
 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      04-01-2008
2008/4/1, aidy <(E-Mail Removed)>:
> On 31 Mar, 16:56, Robert Klemme <(E-Mail Removed)> wrote:
>
> > The method invokes the block and uses the result to determine what to
> > do (if or else).
> >
> > Does that help?

>
> Surely does. Thanks Robert, your a linguist.


Hm, not sure whether that was irony or not.

Maybe this helps:

irb(main):001:0> def test(yes,no)
irb(main):002:1> if yield
irb(main):003:2> puts yes
irb(main):004:2> else
irb(main):005:2* puts no
irb(main):006:2> end
irb(main):007:1> end
=> nil
irb(main):008:0> test("ok", "not ok") { 1 > 2 }
not ok
=> nil
irb(main):009:0> test("ok", "not ok") { 1 < 2 }
ok
=> nil
irb(main):010:0> test("ok", "not ok")
LocalJumpError: no block given
from (irb):2:in `test'
from (irb):10
from :0
irb(main):011:0>

Kind regards

robert

--
use.inject do |as, often| as.you_can - without end

 
Reply With Quote
 
aidy
Guest
Posts: n/a
 
      04-02-2008
On 1 Apr, 14:23, Robert Klemme <(E-Mail Removed)> wrote:
> 2008/4/1,aidy<(E-Mail Removed)>:
>
> > On 31 Mar, 16:56, Robert Klemme <(E-Mail Removed)> wrote:

>
> > *> The method invokes the block and uses the result to determine what to
> > *> do (if or else).

>
> > *> Does that help?

>
> > *Surely does. Thanks Robert, your a linguist.

>
> Hm, not sure whether that was irony or not.
>
> Maybe this helps:
>
> irb(main):001:0> def test(yes,no)
> irb(main):002:1> if yield
> irb(main):003:2> puts yes
> irb(main):004:2> else
> irb(main):005:2* puts no
> irb(main):006:2> end
> irb(main):007:1> end
> => nil
> irb(main):008:0> test("ok", "not ok") { 1 > 2 }
> not ok
> => nil
> irb(main):009:0> test("ok", "not ok") { 1 < 2 }
> ok
> => nil
> irb(main):010:0> test("ok", "not ok")
> LocalJumpError: no block given
> * * * * from (irb):2:in `test'
> * * * * from (irb):10
> * * * * from :0
> irb(main):011:0>
>
> Kind regards
>
> robert
>
> --
> use.inject do |as, often| as.you_can - without end


Wasn't ironic Robert, I studied #yield and blocks when you mentioned
them. It was exactly what I was looking for. Probably one of the most
powerful assets of Ruby and I missed it.

Cheers

Aidy

 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      04-02-2008
2008/4/2, aidy <(E-Mail Removed)>:
> On 1 Apr, 14:23, Robert Klemme <(E-Mail Removed)> wrote:
> > 2008/4/1,aidy<(E-Mail Removed)>:


> > > Surely does. Thanks Robert, your a linguist.

> >
> > Hm, not sure whether that was irony or not.


> Wasn't ironic Robert, I studied #yield and blocks when you mentioned
> them. It was exactly what I was looking for. Probably one of the most
> powerful assets of Ruby and I missed it.


Ah! I'm glad I could help. And, yes, blocks (anonymous functions) are
one of the best features in Ruby - totally agree.

Kind regards

robert

--
use.inject do |as, often| as.you_can - without end

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Subtle difference between boolean value and boolean comparison? Metre Meter Javascript 7 08-06-2010 08:40 PM
difference between 'boolean' and 'java.lang.Boolean' J Leonard Java 4 01-19-2008 02:56 AM
newb: logging.getLogger('') and logging.getLogger("something") johnny Python 1 12-12-2006 06:11 AM
Re: Logging to a file and closing it again properly (logging module) Christoph Haas Python 1 06-14-2006 08:47 AM
Logging to a file and closing it again properly (logging module) Christoph Haas Python 0 06-12-2006 09:58 PM



Advertisments