#!perl
use strict;
use warnings;
use IO::File;
use Test::Exception;
use Test::NoWarnings;
use Test::More tests => 28;
BEGIN { use_ok('File::Extractor'); }
{
my @default_libs = File::Extractor->getDefaultLibraries;
is(+@default_libs, +grep { /^libextractor/ } @default_libs, 'default libraries look sane');
}
{
my $e;
lives_ok(sub {
$e = File::Extractor->loadDefaultLibraries;
}, 'loadDefaultLibraries');
isa_ok($e, 'File::Extractor');
{
my %keywords;
lives_ok(sub {
%keywords = $e->getKeywords( IO::File->new('t/data/7peoples.png', 'r') );
}, 'getKeywords from fh');
is_deeply(\%keywords, {
'modification date' => '2005-09-24 16:38:15',
'mimetype' => 'image/png',
'size' => '266x266',
}, 'keywords');
}
{
my %keywords;
lives_ok(sub {
%keywords = $e->getKeywords(do {
local $/;
my $fh = IO::File->new('t/data/7peoples.png', 'r');
<$fh>;
});
}, 'getKeywords from buffer');
is_deeply(\%keywords, {
'modification date' => '2005-09-24 16:38:15',
'mimetype' => 'image/png',
'size' => '266x266',
}, 'keywords');
}
{
my %keywords;
lives_ok(sub {
%keywords = $e->getKeywords('foo');
}, 'getKeywords from nonsense buffer');
is(+%keywords, 0, 'returns empty list when no keywords were found');
}
}
lives_ok(sub {
my $e;
lives_ok(sub {
$e = File::Extractor->loadConfigLibraries('libextractor_hash_md5');
}, 'loadConfigLibraries class');
isa_ok($e, 'File::Extractor');
my $e2;
lives_ok(sub {
$e2 = $e->loadConfigLibraries('libextractor_hash_sha1');
}, 'loadConfigLibraries instance');
isa_ok($e2, 'File::Extractor');
throws_ok(sub {
$e->getKeywords('foo');
}, qr/invalidates/, 'loadConfigLibraries instance method invalidates instance');
my $e3;
lives_ok(sub {
$e3 = $e2->removeLibrary('libextractor_hash_md5');
}, 'removeLibrary');
isa_ok($e3, 'File::Extractor');
throws_ok(sub {
$e2->getKeywords('foo');
}, qr/invalidates/, 'removeLibrary invalidates instance');
}, 'destroying invalidated instances doesn\'t croak');
{
my $e;
lives_ok(sub {
$e = File::Extractor->addLibrary('libextractor_hash_md5');
}, 'addLibrary class');
isa_ok($e, 'File::Extractor');
my $e2;
lives_ok(sub {
$e2 = $e->addLibrary('libextractor_hash_sha1');
}, 'addLibrary instance');
throws_ok(sub {
$e->getKeywords('foo');
}, qr/invalidates/, 'addLibrary instance method invalidates instance');
}
{
my $e;
lives_ok(sub {
$e = File::Extractor->addLibraryLast('libextractor_hash_md5');
}, 'addLibraryLast class');
isa_ok($e, 'File::Extractor');
my $e2;
lives_ok(sub {
$e2 = $e->addLibraryLast('libextractor_hash_sha1');
}, 'addLibraryLast instance');
throws_ok(sub {
$e->getKeywords('foo');
}, qr/invalidates/, 'addLibraryLast instance method invalidates instance');
}