summaryrefslogtreecommitdiffstats
path: root/t/01-normalize.t
blob: bf8a85fb0a8ab197dbfaddfdcc57a81f3028c3e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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();