The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test::More tests => 4022;

BEGIN {
	use_ok('Compress::unLZMA')
};

sub slurp {
	my ($filename) = @_;

	my $tmp;
	open(F, "<$filename");
	binmode F;
	{ local $/; $tmp = <F>; }
	close(F);

	return $tmp;
}

foreach my $file (qw(t/README t/test.png t/empty)) {
	my $origin = slurp($file);
	my $data = Compress::unLZMA::uncompressfile("$file.lzma");
	is($@, '', 'no error uncompressing file');
	is($data, $origin, 'uncompressed data from file matches original');

	my $tmp = slurp("$file.lzma");
	$data = Compress::unLZMA::uncompress($tmp);
	is($@, '', 'no error uncompressing buffer');
	is($data, $origin, 'uncompressed data from buffer matches original');

	is(Compress::unLZMA::uncompress(slurp("$file.lzma")), $origin);
	is($@, '');

#	ok(!Compress::unLZMA::uncompressfile($file));
#	like($@, qr/too long file/i);
}

ok(!Compress::unLZMA::uncompress(''));

ok(!Compress::unLZMA::uncompressfile("t/nofile.lzma"));
like($@, qr/input file error/i);

my $tmp = slurp("t/README.lzma");
for (my $i = 0; $i < 1000*1; $i++) {
	my $data = Compress::unLZMA::uncompressfile("t/README.lzma");
	is($@, '');
	if ($@) { last; }
	ok($data);

	my $data1 = Compress::unLZMA::uncompress($tmp);
	is($@, '');
	if ($@) { last; }
	ok($data1);
}