use strict; use warnings; use Test::More; use Cepis; for my $value ( '01001000', '01001-000', ' 01001-000 ', '01001.000' ) { is( Cepis::normalize_cep($value), '01001000', "'$value' normalises" ); } for my $value ( '', '123', '0100100a', '010010000', 'abcdefgh', '0100 1000x' ) { my $ok = eval { Cepis::normalize_cep($value); 1 }; ok( !$ok, "'$value' is rejected" ); isa_ok( $@, 'Cepis::Error::InvalidCEP' ); } for my $value ( undef, [], {}, \'x' ) { my $ok = eval { Cepis::normalize_cep($value); 1 }; ok( !$ok, 'a non-string is rejected' ); isa_ok( $@, 'Cepis::Error::InvalidCEP' ); } my $ok = eval { Cepis::normalize_cep('123'); 1 }; ok( !$ok, 'malformed CEP throws' ); ok( ref $@ && $@->isa('Cepis::Error'), 'one isa test catches everything' ); like( "$@", qr/8 digits/, 'the error stringifies to its message' ); is( Cepis::Client::normalize_cep('01001-000'), '01001000', 'the function is also reachable on Cepis::Client' ); done_testing();