#!/usr/bin/perl use warnings; use strict; use File::Temp qw(tempfile); use File::Spec; use Digest::MD5 qw(md5_hex); use Test::More tests => 5 + 2 * 1; # general tests + number of samples * test per sample BEGIN { use_ok('FLV::ToMP3'); } my @samples = ( { flvfile => File::Spec->catfile('t', 'samples', 'flash6.flv'), outsize => 119118, }, { flvfile => File::Spec->catfile('t', 'samples', 'flash8.flv'), outsize => 119118, }, ); my @cleanup; { my $converter = FLV::ToMP3->new(); eval { $converter->parse_flv('nosuchfile.flv'); }; like($@, qr/Failed to read FLV file/, 'ToMP3 parse non-existent file'); eval { $converter->save(File::Spec->catfile('nosuchdir/file.mp3')); }; like($@, qr/No audio data/, 'ToMP3 empty FLV'); $converter->{flv}->set_meta(audiocodecid => 0); # hack eval { $converter->save(File::Spec->catfile('nosuchdir/file.mp3')); }; like($@, qr/Audio format uncompressed not supported/, 'ToMP3 wrong audio format'); $converter->{flv}->set_meta(audiocodecid => 2); # hack eval { $converter->save(File::Spec->catfile('nosuchdir/file.mp3')); }; like($@, qr/Failed to write MP3 file/, 'ToMP3 impossible output filename'); } for my $sample (@samples) { my $converter = FLV::ToMP3->new(); $converter->parse_flv($sample->{flvfile}); # Write the MP3 back out as a temp file my ($fh, $tempmp3) = tempfile(); die if (! -f $tempmp3); push @cleanup, $tempmp3; close $fh; $converter->save($tempmp3); is(-s $tempmp3, $sample->{outsize}, 'save mp3 file'); } END { # Delete temp files unlink $_ for @cleanup; }