#!/usr/local/bin/perl -w
use Test::More;
use strict;
BEGIN { plan tests => 96 }
use MP3::Info 1.02;
use File::Copy;
use File::Spec::Functions;
use_winamp_genres();
my($tf1, $tf2, $tf3, $tf4, $tt1, $tt2, $ti1, $ti2,
$ttd1, $ttd2, $tti1, $tti2);
$tf1 = 'test1.mp3';
$tf2 = 'test2.mp3';
$tf3 = 'test3.mp3';
$tf4 = 'test4.mp3';
if ( (! -e $tf1 && ! -e $tf2) && (-e catfile('t', $tf1) && -e catfile('t', $tf2)) ) {
for ($tf1, $tf2, $tf3, $tf4) {
$_ = catfile('t', $_);
}
}
@{$ttd1}{qw(ALBUM ARTIST GENRE COMMENT YEAR TITLE TRACKNUM)} = (
'', 'Pudge', 'Sound Clip', 'All Rights Reserved',
'1998', 'Test 1', 1
);
@{$ttd2}{qw(ALBUM ARTIST GENRE COMMENT YEAR TITLE TRACKNUM)} = (
'', 'Pudge', 'Sound Clip', 'All Rights Reserved',
'1998', 'Test 2', 2
);
@{$tti1}{qw(FREQUENCY STEREO BITRATE LAYER MM SS VERSION TIME)} = (
qw(44.1 1 128 3 0 0 1 00:00)
);
@{$tti2}{qw(FREQUENCY STEREO BITRATE LAYER MM SS VERSION TIME)} = (
qw(22.05 0 128 3 0 1 2 00:01)
);
sub test_fields {
my($f1, $f2, $f, $not, $note) = @_;
if ($not) {
isnt($f1->{$f}, $f2->{$f}, $note);
} else {
is($f1->{$f}, $f2->{$f}, $note);
}
}
SKIP: {
# skip "MP3::Info", 4;
ok($tt1 = get_mp3tag ($tf1), 'get_mp3tag 1');
ok($tt2 = get_mp3tag ($tf2), 'get_mp3tag 2');
ok($ti1 = get_mp3info($tf1), 'get_mp3info 1');
ok($ti2 = get_mp3info($tf2), 'get_mp3info 2');
}
SKIP: {
# skip "MP3::Info", 14;
for my $f (qw(ALBUM ARTIST GENRE COMMENT YEAR TITLE TRACKNUM)) {
test_fields($tt1, $ttd1, $f, 0, "tag $f 1");
test_fields($tt2, $ttd2, $f, 0, "tag $f 2");
}
}
SKIP: {
# skip "MP3::Info", 16;
for my $f (qw(FREQUENCY STEREO BITRATE LAYER MM SS VERSION TIME)) {
test_fields($ti1, $tti1, $f, 0, "info $f 1");
test_fields($ti2, $tti2, $f, 0, "info $f 2");
}
}
SKIP: {
# skip "MP3::Info", 0;
copy($tf1, $tf3) or die "Can't copy '$tf1' to '$tf3': $!";
copy($tf2, $tf4) or die "Can't copy '$tf2' to '$tf4': $!";
my %th = (ALBUM=>'hrmmm', ARTIST=>'hummmm', GENRE=>'Power Ballad');
while (my($k, $v) = each %th) {
$tt1->{$k} = $ttd1->{$k} = $tt2->{$k} = $ttd2->{$k} = $v;
}
}
SKIP: {
# skip "MP3::Info", 4;
ok($tt1 = get_mp3tag ($tf3), 'get_mp3tag 3');
ok($tt2 = get_mp3tag ($tf4), 'get_mp3tag 4');
ok($ti1 = get_mp3info($tf3), 'get_mp3info 3');
ok($ti2 = get_mp3info($tf4), 'get_mp3info 4');
}
SKIP: {
# skip "MP3::Info", 6;
for my $f (qw(ALBUM ARTIST GENRE)) {
test_fields($tt1, $ttd1, $f, 1, "tag $f 1 != 3");
test_fields($tt2, $ttd2, $f, 1, "tag $f 2 != 4");
}
}
SKIP: {
# skip "MP3::Info", 16;
for my $f (qw(FREQUENCY STEREO BITRATE LAYER MM SS VERSION TIME)) {
test_fields($ti1, $tti1, $f, 0, "info $f 1 == 3");
test_fields($ti2, $tti2, $f, 0, "info $f 2 == 4");
}
}
SKIP: {
# skip "MP3::Info", 6;
ok(set_mp3tag($tf3, $ttd1), 'set tag 3');
ok(set_mp3tag($tf4, $ttd2), 'set tag 4');
ok($tt1 = get_mp3tag ($tf3), 'get_mp3tag 3');
ok($tt2 = get_mp3tag ($tf4), 'get_mp3tag 4');
ok($ti1 = get_mp3info($tf3), 'get_mp3info 3');
ok($ti2 = get_mp3info($tf4), 'get_mp3info 4');
}
SKIP: {
# skip "MP3::Info", 14;
for my $f (qw(ALBUM ARTIST GENRE COMMENT YEAR TITLE TRACKNUM)) {
test_fields($tt1, $ttd1, $f, 0, "tag $f 1");
test_fields($tt2, $ttd2, $f, 0, "tag $f 2");
}
}
SKIP: {
# skip "MP3::Info", 16;
for my $f (qw(FREQUENCY STEREO BITRATE LAYER MM SS VERSION TIME)) {
test_fields($ti1, $tti1, $f, 0, "info $f 1");
test_fields($ti2, $tti2, $f, 0, "info $f 2");
}
}
SKIP: {
# skip "MP3::Info", 0;
unlink($tf3) or warn "Can't unlink '$tf3': $!";
unlink($tf4) or warn "Can't unlink '$tf4': $!";
}
__END__