The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use Test::More;
use strict;

BEGIN { plan tests => 22 }

use MP3::Info 1.02;

use File::Copy 'copy';
use File::Spec::Functions 'catfile';

my %mp3s = (
	'v1'     => 'testv1.mp3',
	'v1.1'   => 'testv1.1.mp3',
	'v2.2.0' => 'testv2.2.0.mp3',
	'v2.3.0' => 'testv2.3.0.mp3',
	'v2.4.0' => 'testv2.4.0.mp3',
);

my %sizes = (
	'v1'     => 128,
	'v1.1'   => 128,
	'v2.2.0' => 106,
	'v2.3.0' => 130,
	'v2.4.0' => 130,
);


if ( ! -e $mp3s{v1} && (-e catfile('t', $mp3s{v1})) ) {
	for (keys %mp3s) {
		$mp3s{$_} = catfile('t', $mp3s{$_});
	}
}


SKIP: {
#	skip "MP3::Info", 10;

	for my $id3 (keys %mp3s) {
		my $n = $mp3s{$id3} . 'r';
		copy($mp3s{$id3}, $n);
		$mp3s{$id3} = $n;
	}

	for my $id3 (sort keys %mp3s) {
		my $bytes = remove_mp3tag($mp3s{$id3}, 'ALL');
		is($bytes, $sizes{$id3}, "Remove tag from ID3$id3");

		$bytes = remove_mp3tag($mp3s{$id3}, 'ALL');
		is($bytes, -1, "Remove no tag from ID3$id3");

		unlink $mp3s{$id3};
	}
}

SKIP: {
#	skip "MP3::Info", 12;

	for my $id3 (keys %mp3s) {
		next if $id3 =~ /v1/;
		(my $o = $mp3s{$id3}) =~ s/r$//;
		copy($o, $mp3s{$id3});
	}

	for my $id3 (sort keys %mp3s) {
		next if $id3 =~ /v1/;
		ok(my $tag = get_mp3tag($mp3s{$id3}), "Get tag for ID3$id3");
		ok(set_mp3tag($mp3s{$id3}, $tag), "Set new ID3v1.1 tag for ID3$id3 file");

		my $bytes = remove_mp3tag($mp3s{$id3}, 'ALL');
		is($bytes, $sizes{$id3} + $sizes{'v1.1'}, "Remove tag from ID3$id3 + ID3v1.1");

		$bytes = remove_mp3tag($mp3s{$id3}, 'ALL');
		is($bytes, -1, "Remove no tag from ID3$id3");

		unlink $mp3s{$id3};
	}
}

__END__