[bcn-pm] dubte

Jose Luis Martinez jlmartinez-lists-bcn-pm a capside.com
dij maig 28 23:59:41 PDT 2009


Jordi Delgado escribió:
> Hola,
> 
> (...)
> given( $ARGV[0] ) {
> 	when( /^-?\d+\.\d+$/ ) { #smart
> 			say 'Not a number!' }
> 	when( $_ > 10 ) { #dumb
> 			say 'Number is greater than 10' }
> 	when( $_ < 10 ) { #dumb
> 			say 'Number is less than 10' }
> 	default { say 'Number is 10' }
> }
> (...)
> 

Encierralo en una sub xxx, por ejemplo) y cambia los "say" por "die", 
return 1, return -1, return 0 .

use Test::More;
use Test::Exception;

plan tests => 19;
cmp_ok(xxx('2.0'), '==', -1, '2.0 es menor que 10');
cmp_ok(xxx('+2.0'), '==', -1, '2.0 es menor que 10');
cmp_ok(xxx(2.0), '==', -1, '2.0 es menor que 10');
cmp_ok(xxx(2), '==', -1, '2 es menor que 10');

cmp_ok(xxx('12.0'), '==', 1, '12.0 es mayor que 10');
cmp_ok(xxx('+12.0'), '==', 1, '12.0 es mayor que 10');
cmp_ok(xxx(12.0), '==', 1, '12.0 es mayor que 10');
cmp_ok(xxx(12), '==', 1, '12 es mayor que 10');

cmp_ok(xxx('-2.0'), '==', -1, '-2.0 es menor que 10');
cmp_ok(xxx(-2.0), '==', -1, '-2.0 es menor que 10');
cmp_ok(xxx(-2), '==', -1, '-2 es menor que 10');

cmp_ok(xxx('10.0'), '==', 0, '10.0 == 10');
cmp_ok(xxx('+10.0'), '==', 0, '10.0 == 10');
cmp_ok(xxx(10.0), '==', 0, '10.0 == 10');
cmp_ok(xxx(10), '==', 0, '10 == 10');

dies_ok(sub {
   xxx('NotANumber');
}, 'NotANumber dies');
dies_ok(sub {
   xxx('10,0');
}, '10,0 dies');
dies_ok(sub {
   xxx('10.dd');
}, '10.dd dies');
dies_ok(sub {
   xxx('dd.20');
}, 'dd.20 dies');


Funciona como esperas? o realmente hay un bug?

Nota: he escrito el test sin probarlo... consideralo pseudo-codigo si no 
funciona :p

Atentamente,

Jose Luis Martinez
jlmartinez a capside.com


Més informació sobre la llista de correu Barcelona-pm