Skip Menu |

This queue is for tickets about the Business-BR-Ids CPAN distribution.

Report information
The Basics
Id: 102511
Status: new
Priority: 0/
Queue: Business-BR-Ids

People
Owner: Nobody in particular
Requestors: garu [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: test_cpf( 0 ) returns true
Oi Adriano! Antes de tudo, parabéns pelo Business::BR::* - acho que todo mundo que tem algum processamento de pessoa física ou jurídica em Perl no Brasil usa e ama esses módulos :) Dito isso, acabei de esbarrar num probleminha aqui: $ perl -MBusiness::BR::CPF=test_cpf -E 'say 42 if test_cpf(0)' 42 "0" não deveria ser um CPF válido, certo? Tentando fazer um diagnóstico rápido, vi que a documentação sugere que um CPF correto tem sempre 11 dígitos. Se isso é realmente verdade, não acho que a test_cpf() deveria chamar o canon_cpf() como ela faz hoje. Até porque, como o canon_cpf() chama _canon_id() passando size => 11, a verificação de length() só vai falhar se o total de digitos for *maior* do que 11. Se realmente um CPF só pode ter 11 caracteres, uma solução pode ser não usar a canon_cpf() dentro da test_cpf(), e sim um s/\D+//g seguido por uma validação de length($cpf) != 11. Parece bom? Se há algum motivo especial pro canon_cpf() entrar que eu não saiba, aí de repente cabe uma nota nos "BUGS" ou "CAVEATS" de que (1) números serão expandidos para 11 dígitos com zeros à esquerda se tiverem menos de 11 dígitos; e (2) por conta disso, test_cpf(0) == verdadeiro. Assim evita qualquer surpresa :) Espero ter ajudado - parabéns de novo! \o/ Abraço!