The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'

######################### We start with some black magic to print on failure.

# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)

BEGIN { $| = 1; print "1..6\n"; }
END {print "package load...        not ok 1\n" unless $loaded;}
use Image::IPTCInfo;
$loaded = 1;
print "package load....        ok 1\n";

######################### End of black magic.

#
# Make sure debug mode is turned off for release
#

if ($Image::IPTCInfo::debugMode == 0)
{
    print "debug mode off....      ok 2\n";
}
else
{
    print "debug mode off....      not ok 2\n";
}


#
# Test loading IPTC info
#

my $info = new Image::IPTCInfo('demo_images/burger_van.jpg');

if (defined($info) && $info->Attribute('caption/abstract') eq
    'A van full of burgers awaits mysterious buyers in a dark parking lot.')
{
    print "get caption....         ok 3\n";
}
else
{
    print "get caption....         not ok 3\n";
    print "error: " . Image::IPTCInfo::Error() . "\n";
}

#
# Test saving IPTC info
#

$info->SetAttribute('caption/abstract', 'modified caption');
$info->SaveAs('demo_images/burger_van_save1.jpg') ||
    print "error: " . Image::IPTCInfo::Error() . "\n";

undef $info;

$info = new Image::IPTCInfo('demo_images/burger_van_save1.jpg');

if (defined($info) && $info->Attribute('caption/abstract') eq 'modified caption')
{
    print "save and load....       ok 4\n";
}
else
{
    print "save and load....       not ok 4\n";
    print "error: " . Image::IPTCInfo::Error() . "\n";
}

#
# Re-load modified image and use Save() to save, then check it
#
undef $info;

$info = new Image::IPTCInfo('demo_images/burger_van_save1.jpg');

if (!defined($info))
{
    print "re-save and re-load.... not ok 5\n";
    print "error: " . Image::IPTCInfo::Error() . "\n";
    exit;
}

$info->SetAttribute('caption/abstract', 'modified caption 2');
$info->Save();

undef $info;

$info = new Image::IPTCInfo('demo_images/burger_van_save1.jpg');

if (defined($info) && $info->Attribute('caption/abstract') 
    eq 'modified caption 2')
{
    print "re-save and re-load.... ok 5\n";
}
else
{
    print "re-save and re-load.... not ok 5\n";
    print "error: " . Image::IPTCInfo::Error() . "\n";
}

use IO::File;
my $handle = IO::File->new('demo_images/burger_van_save1.jpg');
$info = Image::IPTCInfo->new($handle);
if (defined($info) && $info->Attribute('caption/abstract') 
    eq 'modified caption 2')
{
    print "re-load with handle.... ok 6\n";
}
else
{
    print "re-load with handle.... not ok 6\n";
    print "error: " . Image::IPTCInfo::Error() . "\n";
}