BERT

 view release on metacpan or  search on metacpan

t/03-erlang.t  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 31;
use BERT;

my ($perl, $bert, @bytes);

# empty atom
@bytes = (
    131, 100, 0, 0
);
$perl = decode_bert(pack 'C*', @bytes);
isa_ok($perl, 'BERT::Atom');
is($perl, BERT::Atom->new(''), 'empty atom decode');
$bert = encode_bert($perl);
is_deeply([ unpack 'C*', $bert ], \@bytes, 'empty atom encode');

# atom
@bytes = (
    131, 100, 0, 5, 97, 116, 0, 111, 109
);
$perl = decode_bert(pack 'C*', @bytes);
isa_ok($perl, 'BERT::Atom');
is($perl, BERT::Atom->new("at\0om"), 'atom decode');
$bert = encode_bert($perl);
is_deeply([ unpack 'C*', $bert ], \@bytes, 'atom encode');


@bytes = (
    131, 100, 0, 12, 195, 165, 195, 164, 195, 182, 195, 133, 195, 132,
    195, 150
);
$perl = decode_bert(pack 'C*', @bytes);
isa_ok($perl, 'BERT::Atom');
is($perl, BERT::Atom->new('åäöÅÄÖ'), 'atom unicode decode');
$bert = encode_bert($perl);
is_deeply([ unpack 'C*', $bert ], \@bytes, 'atom unicode encode');

# float
@bytes = (
    131, 99, 50, 46, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
    48, 48, 48, 48, 48, 48, 101, 43, 48, 48, 0, 0, 0, 0, 0
);
$perl = decode_bert(pack 'C*', @bytes);
cmp_ok($perl, '==', 2.0, 'float decode');
$bert = encode_bert($perl);
is_deeply([ unpack 'C*', $bert ], \@bytes, 'float encode');

# small integer
@bytes = (
    131, 97, 123
);
$perl = decode_bert(pack 'C*', @bytes);
is($perl, 123, 'small integer decode');
$bert = encode_bert($perl);
is_deeply([ unpack 'C*', $bert ], \@bytes, 'small integer encode');

# integer
@bytes = (
    131, 98, 0, 0, 48, 57
);
$perl = decode_bert(pack 'C*', @bytes);
is($perl, 12345, 'integer decode');
$bert = encode_bert($perl);
is_deeply([ unpack 'C*', $bert ], \@bytes, 'integer encode');

@bytes = (
    131, 98, 255, 255, 255, 255
);
$perl = decode_bert(pack 'C*', @bytes);
is($perl, -1, 'integer decode');
$bert = encode_bert($perl);
is_deeply([ unpack 'C*', $bert ], \@bytes, 'integer encode');

@bytes = (
    131, 98, 248, 0, 0, 0
);
$perl = decode_bert(pack 'C*', @bytes);
is($perl, -134217728, 'integer decode');
$bert = encode_bert($perl);
is_deeply([ unpack 'C*', $bert ], \@bytes, 'integer encode');

@bytes = (
    131, 110, 4, 1, 1, 0, 0, 8
);
$perl = decode_bert(pack 'C*', @bytes);
is($perl, -134217729, 'small big decode');
$bert = encode_bert($perl);
is_deeply([ unpack 'C*', $bert ], \@bytes, 'small big encode');

@bytes = (
    131, 98, 7, 255, 255, 255
);
$perl = decode_bert(pack 'C*', @bytes);
is($perl, 134217727, 'integer decode');
$bert = encode_bert($perl);
is_deeply([ unpack 'C*', $bert ], \@bytes, 'integer encode');



( run in 2.803 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )