The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More 0.88; # for done_testing
use Test::Differences;
use Bencode 'bencode';

sub enc_ok {
	my ( $frozen, $thawed ) = @_;
	local $Test::Builder::Level = $Test::Builder::Level + 1;
	eq_or_diff bencode( $thawed ), $frozen, "encode $frozen";
}

enc_ok 'i4e'                      => 4;
enc_ok 'i0e'                      => 0;
enc_ok 'i-10e'                    => -10;
enc_ok 'i12345678901234567890e'   => '12345678901234567890';
enc_ok '0:'                       => '';
enc_ok '3:abc'                    => 'abc';
enc_ok '10:1234567890'            => \'1234567890';
enc_ok 'le'                       => [];
enc_ok 'li1ei2ei3ee'              => [ 1, 2, 3 ];
enc_ok 'll5:Alice3:Bobeli2ei3eee' => [ [ 'Alice', 'Bob' ], [ 2, 3 ] ];
enc_ok 'de'                       => {};
enc_ok 'd3:agei25e4:eyes4:bluee'  => { 'age' => 25, 'eyes' => 'blue' };
enc_ok 'd8:spam.mp3d6:author5:Alice6:lengthi100000eee' => { 'spam.mp3' => { 'author' => 'Alice', 'length' => 100000 } };

done_testing;