CBOR-PP

 view release on metacpan or  search on metacpan

t/examples.t  view on Meta::CPAN

    [ -10 => '29' ],
    [ -100 => '3863' ],
    [ -1000 => '3903e7' ],

    # These appear to decode with no rounding errors
    # on long-double Perls:
    [ 1.5 => 'f93e00' ],
    [ 100000 => 'fa47c35000' ],
);

if (!$weird_double_yn) {
    push @decode, (
        [ 1.1 => 'fb3ff199999999999a' ],
        [ $inf => 'fa7f800000' ],
        [ $nan => 'fa7fc00000' ],
        [ $neginf => 'faff800000' ],
    );

    if ($is_64bit) {
        push @decode, (
           [ -4.1 => 'fbc010666666666666' ],
            [ $inf => 'fb7ff0000000000000' ],
            [ $nan => 'fb7ff8000000000000' ],
            [ $neginf => 'fbfff0000000000000' ],
        );
    }
}

push @decode, (
    [ '2013-03-21T20:04:00Z' => 'c074323031332d30332d32315432303a30343a30305a' ],
    [ 1363896240 => 'c11a514b67b0' ],
    [ 1363896240.5 => 'c1fb41d452d9ec200000' ],
    [ "\1\2\3\4" => "4401020304" ],
    [ "\1\2\3\4" => 'd74401020304' ],
    [ 'dIETF' => 'd818456449455446' ],
    [ 'http://www.example.com' => 'd82076687474703a2f2f7777772e6578616d706c652e636f6d' ],
    [ '' => '60' ],
    [ 'a' => '6161' ],
    [ 'IETF' => '6449455446' ],
    [ q<"\\> => '62225c' ],
    [ "\x{10151}" => '64f0908591' ],
    [ { 1 => 2, 3 => 4 } => 'a201020304' ],
    [["a", {"b" => "c"}] => '826161a161626163' ],
    [ {a => 1, b => [2, 3]} => 'a26161016162820203' ],
    [ { qw( a A b B c C d D e E ) } => 'a56161614161626142616361436164614461656145' ],
    [ "\1\2\3\4\5" => '5f42010243030405ff' ],
    [ 'streaming' => '7f657374726561646d696e67ff' ],
    [ [] => '9fff' ],
    [ [ 1, [2, 3], [4, 5]] => '9f018202039f0405ffff' ],
    [ [ 1, [2, 3], [4, 5]] => '9f01820203820405ff' ],
    [ [1, [2, 3], [4, 5]] => '83018202039f0405ff' ],
    [ [1, [2, 3], [4, 5]] => '83019f0203ff820405' ],
    [ [ 1 .. 25 ] => '9f0102030405060708090a0b0c0d0e0f101112131415161718181819ff' ],
    [ { a => 1, b => [2,3] } => 'bf61610161629f0203ffff' ],
    [ ['a', { b => 'c' }] => '826161bf61626163ff' ],
    [ { Fun => Types::Serialiser::true(), Amt => -2 } => 'bf6346756ef563416d7421ff' ],
);


for my $t (@decode) {
    my $decoded = CBOR::PP::decode( pack( 'H*', $t->[1] ) );
    is_deeply(
        $decoded,
        $t->[0],
        sprintf('Decode %s', $t->[1])
    ) or diag explain $decoded;

    is_deeply(
        scalar( CBOR::PP::decode( CBOR::PP::encode( $t->[0] ) ) ),
        $t->[0],
        sprintf("Round-trip: $t->[1]"),
    );
}

done_testing;



( run in 1.261 second using v1.01-cache-2.11-cpan-39bf76dae61 )