[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Alternative to switch statements

aidy

3/26/2007 4:05:00 PM

Hi,

I am trying to write a 'keyword-driven test automation framework' in
Ruby.

Using a case statement

<snip>
def field(name, args)
case name

when 'username'
name='login'

when 'password'
name='password'
end

return $ie.text_field(:name, name).set(args)

end

def button(name)
case name

when 'login'
name = 'Login'

end

return $ie.button(:value, name).click

end

<snip>

Calling code

<snip>
field 'username', 'x@x.com'
field 'password', 'password123'
button 'login'
<snip>

I don't like it because

1. It is procedural
2. Lengthy switch statements may affect performance

Could anyone suggest a way using, collections or symbols or something
else?

Thanks

aidy

1 Answer

Robert Klemme

3/26/2007 4:14:00 PM

0

On 26.03.2007 18:04, aidy wrote:
> Hi,
>
> I am trying to write a 'keyword-driven test automation framework' in
> Ruby.
>
> Using a case statement
>
> <snip>
> def field(name, args)
> case name
>
> when 'username'
> name='login'
>
> when 'password'
> name='password'
> end
>
> return $ie.text_field(:name, name).set(args)
>
> end
>
> def button(name)
> case name
>
> when 'login'
> name = 'Login'
>
> end
>
> return $ie.button(:value, name).click
>
> end
>
> <snip>
>
> Calling code
>
> <snip>
> field 'username', 'x@x.com'
> field 'password', 'password123'
> button 'login'
> <snip>
>
> I don't like it because
>
> 1. It is procedural
> 2. Lengthy switch statements may affect performance
>
> Could anyone suggest a way using, collections or symbols or something
> else?

This is an obvious case for Hash with a custom default value handler:

MAP_FIELD = Hash.new {|h,k| k}.update(
'username' => 'login'
)

def field(name,args)
$ie.text_field(:name, MAP_FIELD[name]).set(args)
end

....

Kind regards

robert