- fix META.yml testing and the generated META.yml
https://rt.cpan.org/Ticket/Display.html?id=65235
+ - test and add error reporting to to_*() family methods
+
Imager 0.83 - 21 May 2011
===========
return;
}
- my $result = Imager->new;
- $result->{IMG} = i_img_to_pal($self->{IMG}, $opts);
-
- #print "Type ", i_img_type($result->{IMG}), "\n";
+ $self->_valid_image
+ or return;
- if ($result->{IMG}) {
- return $result;
- }
- else {
- $self->{ERRSTR} = $self->_error_as_msg;
+ my $result = Imager->new;
+ unless ($result->{IMG} = i_img_to_pal($self->{IMG}, $opts)) {
+ $self->_set_error(Imager->_error_as_msg);
return;
}
+
+ return $result;
}
-# convert a paletted (or any image) to an 8-bit/channel RGB images
+# convert a paletted (or any image) to an 8-bit/channel RGB image
sub to_rgb8 {
my $self = shift;
- my $result;
unless (defined wantarray) {
my @caller = caller;
return;
}
- if ($self->{IMG}) {
- $result = Imager->new;
- $result->{IMG} = i_img_to_rgb($self->{IMG})
- or undef $result;
+ $self->_valid_image
+ or return;
+
+ my $result = Imager->new;
+ unless ($result->{IMG} = i_img_to_rgb($self->{IMG})) {
+ $self->_set_error(Imager->_error_as_msg());
+ return;
}
return $result;
}
-# convert a paletted (or any image) to an 8-bit/channel RGB images
+# convert a paletted (or any image) to a 16-bit/channel RGB image
sub to_rgb16 {
my $self = shift;
- my $result;
unless (defined wantarray) {
my @caller = caller;
- warn "to_rgb16() called in void context - to_rgb8() returns the converted image at $caller[1] line $caller[2]\n";
+ warn "to_rgb16() called in void context - to_rgb16() returns the converted image at $caller[1] line $caller[2]\n";
return;
}
- if ($self->{IMG}) {
- $result = Imager->new;
- $result->{IMG} = i_img_to_rgb16($self->{IMG})
- or undef $result;
+ $self->_valid_image
+ or return;
+
+ my $result = Imager->new;
+ unless ($result->{IMG} = i_img_to_rgb16($self->{IMG})) {
+ $self->_set_error(Imager->_error_as_msg());
+ return;
}
return $result;
# to make sure we get expected values
use strict;
-use Test::More tests => 230;
+use Test::More tests => 233;
BEGIN { use_ok(Imager => qw(:handy :all)) }
# test the OO interfaces
my $impal2 = Imager->new(type=>'pseudo', xsize=>200, ysize=>201);
-ok($impal2, "make paletted via OO");
+ok($impal2, "make paletted via OO")
+ or diag(Imager->errstr);
is($impal2->getchannels, 3, "check channels");
is($impal2->bits, 8, "check bits");
is($impal2->type, 'paletted', "check type");
"we can setcolors");
# make an rgb version
- my $imrgb2 = $impal2->to_rgb8();
+ my $imrgb2 = $impal2->to_rgb8()
+ or diag($impal2->errstr);
is($imrgb2->type, 'direct', "converted is direct");
# and back again, specifying the palette
is($impal3->type, 'paletted', "and is paletted");
}
+{ # to_rgb on incomplete image
+ my $im = Imager->new;
+ ok($im, "make empty image");
+ ok(!$im->to_rgb8, "convert to rgb8");
+ is($im->errstr, "empty input image", "check message");
+}
+
{ # basic checks, 8-bit direct images
my $im = Imager->new(xsize => 2, ysize => 3);
ok($im, 'create 8-bit direct image');
#!perl -w
use strict;
-use Test::More tests => 104;
+use Test::More tests => 107;
BEGIN { use_ok(Imager=>qw(:all :handy)) }
is_image($im, $im16, "check image data matches");
}
+{ # empty image handling
+ my $im = Imager->new;
+ ok($im, "make empty image");
+ ok(!$im->to_rgb16, "convert empty image to 16-bit");
+ is($im->errstr, "empty input image", "check message");
+}
+
{ # bounds checks
my $im = Imager->new(xsize => 10, ysize => 10, bits => 16);
image_bounds_checks($im);