Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   conditional statements within test method parameters? (http://www.velocityreviews.com/forums/t839844-conditional-statements-within-test-method-parameters.html)

aidy.lewis@googlemail.com 04-13-2007 02:40 PM

conditional statements within test method parameters?
 
hi,

I have a test method that writes some xml. The second parameter is
optional, the first parameter is boolean.

<snip>
test_results((assert(REMEMBER_ME.isSet?)), *msg)
</snip>

Would it be possible to embed a conditional statement between these
parameters

Something like:

<snip>
test_results((assert(REMEMBER_ME.isSet?)), unless 'the object is not
set') ?
</snip>

cheers

aidy


Reuben Grinberg 04-13-2007 03:07 PM

Re: conditional statements within test method parameters?
 
aidy.lewis@googlemail.com wrote:
> hi,
>
> I have a test method that writes some xml. The second parameter is
> optional, the first parameter is boolean.
>
> <snip>
> test_results((assert(REMEMBER_ME.isSet?)), *msg)
> </snip>
>
> Would it be possible to embed a conditional statement between these
> parameters
>
> Something like:
>
> <snip>
> test_results((assert(REMEMBER_ME.isSet?)), unless 'the object is not
> set') ?
> </snip>
>
> cheers
>
> aidy
>


Yes, but it's not necessarily pretty:

def test(one, *two)
puts one
two.each { |t| puts t}
end

irb> test("bob", "jack", "andy")
bob
jack
andy
irb> test("bob")
bob
irb> some_condition = false
irb> test("bob", some_condition ? ["jack", "andy"] : [])
bob
irb>

The "optional" argument is actually a list, so passing in the empty list
for it is the same thing as not passing it in.

Cheers,
Reuben

Robert Klemme 04-13-2007 04:05 PM

Re: conditional statements within test method parameters?
 
On 13.04.2007 16:40, aidy.lewis@googlemail.com wrote:
> hi,
>
> I have a test method that writes some xml. The second parameter is
> optional, the first parameter is boolean.
>
> <snip>
> test_results((assert(REMEMBER_ME.isSet?)), *msg)
> </snip>
>
> Would it be possible to embed a conditional statement between these
> parameters
>
> Something like:
>
> <snip>
> test_results((assert(REMEMBER_ME.isSet?)), unless 'the object is not
> set') ?
> </snip>
>
> cheers


I'm not sure what you are trying to achieve. But it seems strange to
have an assert and caveat with an "unless". Can you explain a bit more
what you want to do?

Kind regards

robert

Brian Candler 04-13-2007 07:01 PM

Re: conditional statements within test method parameters?
 
On Sat, Apr 14, 2007 at 12:20:06AM +0900, Reuben Grinberg wrote:
> >I have a test method that writes some xml. The second parameter is
> >optional, the first parameter is boolean.
> >
> ><snip>
> >test_results((assert(REMEMBER_ME.isSet?)), *msg)
> ></snip>
> >
> >Would it be possible to embed a conditional statement between these
> >parameters
> >
> >Something like:
> >
> ><snip>
> >test_results((assert(REMEMBER_ME.isSet?)), unless 'the object is not
> >set') ?
> ></snip>
> >
> >cheers
> >
> >aidy
> >

>
> Yes, but it's not necessarily pretty:
>
> def test(one, *two)
> puts one
> two.each { |t| puts t}
> end
>
> irb> test("bob", "jack", "andy")
> bob
> jack
> andy
> irb> test("bob")
> bob
> irb> some_condition = false
> irb> test("bob", some_condition ? ["jack", "andy"] : [])
> bob
> irb>
>
> The "optional" argument is actually a list, so passing in the empty list
> for it is the same thing as not passing it in.


I think you missed a '*' on the method call there.

As you've written it, in each case you're passing exactly two arguments, the
second of which is either ["jack","andy"] or [], so the array 'two' will
consist of either [["jack","andy"]] or [[]]

def test(one, *two)
puts one.inspect, two.inspect
puts
end

test("bob","jack","andy")
test("bob")
[false,true].each do |some_condition|
test("bob", some_condition ? ["jack", "andy"] : [])
end
# This is what it should have been
[false,true].each do |some_condition|
test("bob", *(some_condition ? ["jack", "andy"] : []))
end



All times are GMT. The time now is 08:45 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.