From: Robert Klemme Date: 2007-03-27T01:15:05+09:00 Subject: Re: Alternative to switch statements 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 > > > 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 > > > > Calling code > > > field 'username', 'x@x.com' > field 'password', 'password123' > button 'login' > > > 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