]> git.imager.perl.org - imager.git/blobdiff - ICO/t/t60writefail.t
update desired debian packages
[imager.git] / ICO / t / t60writefail.t
index 2b4edbef504caf41e08b8835be2f058ec7feb5be..5bfd55176a0759b58e4949acde5a07a637e8f1d8 100644 (file)
@@ -10,7 +10,7 @@ use Imager ':handy';
 
 # image too big for format tests, for each entry point
 {
-  my $im = Imager->new(xsize => 256, ysize => 255);
+  my $im = Imager->new(xsize => 257, ysize => 256);
   my $data;
   ok(!$im->write(data => \$data, type=>'ico'),
      "image too large");
@@ -18,7 +18,7 @@ use Imager ':handy';
 }
 
 {
-  my $im = Imager->new(xsize => 256, ysize => 255);
+  my $im = Imager->new(xsize => 257, ysize => 256);
   my $data;
   ok(!Imager->write_multi({ data => \$data, type=>'ico' }, $im, $im),
      "image too large");
@@ -27,7 +27,7 @@ use Imager ':handy';
 }
 
 {
-  my $im = Imager->new(xsize => 256, ysize => 255);
+  my $im = Imager->new(xsize => 257, ysize => 256);
   my $data;
   ok(!$im->write(data => \$data, type=>'cur'),
      "image too large");
@@ -35,7 +35,7 @@ use Imager ':handy';
 }
 
 {
-  my $im = Imager->new(xsize => 256, ysize => 255);
+  my $im = Imager->new(xsize => 257, ysize => 256);
   my $data;
   ok(!Imager->write_multi({ data => \$data, type=>'cur' }, $im),
      "image too large");
@@ -77,21 +77,27 @@ use Imager ':handy';
 # low level write failure tests for each entry point (fail on write)
 {
   my $im = Imager->new(xsize => 10, ysize => 10);
-  ok(!$im->write(callback => \&write_failure, maxbuffer => 1, type=>'ico'),
+  my $io = Imager::io_new_cb(\&write_failure, undef, undef, undef, 1);
+  $io->set_buffered(0);
+  ok(!$im->write(io => $io, type=>'ico'),
      "low level write failure (ico)");
   is($im->errstr, "Write failure: synthetic error", "check message");
 }
 
 {
   my $im = Imager->new(xsize => 10, ysize => 10);
-  ok(!$im->write(callback => \&write_failure, maxbuffer => 1, type=>'cur'),
+  my $io = Imager::io_new_cb(\&write_failure, undef, undef, undef, 1);
+  $io->set_buffered(0);
+  ok(!$im->write(io => $io, type=>'cur'),
      "low level write failure (cur)");
   is($im->errstr, "Write failure: synthetic error", "check message");
 }
 
 {
   my $im = Imager->new(xsize => 10, ysize => 10);
-  ok(!Imager->write_multi({ callback => \&write_failure, maxbuffer => 1, type=>'ico' }, $im, $im),
+  my $io = Imager::io_new_cb(\&write_failure, undef, undef, undef, 1);
+  $io->set_buffered(0);
+  ok(!Imager->write_multi({ io => $io, type=>'ico' }, $im, $im),
      "low level write_multi failure (ico)");
   is(Imager->errstr, "Write failure: synthetic error", "check message");
   Imager->_set_error('');
@@ -99,7 +105,9 @@ use Imager ':handy';
 
 {
   my $im = Imager->new(xsize => 10, ysize => 10);
-  ok(!Imager->write_multi({ callback => \&write_failure, maxbuffer => 1, type=>'cur' }, $im, $im),
+  my $io = Imager::io_new_cb(\&write_failure, undef, undef, undef, 1);
+  $io->set_buffered(0);
+  ok(!Imager->write_multi({ io => $io, type=>'cur' }, $im, $im),
      "low level write_multi failure (cur)");
   is(Imager->errstr, "Write failure: synthetic error", "check message");
   Imager->_set_error('');
@@ -107,27 +115,27 @@ use Imager ':handy';
 
 {
   my $im = Imager->new(xsize => 10, ysize => 10);
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(6), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(6)),
      "second write (resource) should fail (ico)");
   is($im->errstr, "Write failure: limit reached", "check message");
   $im->_set_error('');
 
-  ok(!$im->write(type => 'cur', callback => WriteLimit->new(6), maxbuffer => 1),
+  ok(!$im->write(type => 'cur', io => limited_write_io(6)),
      "second (resource) write should fail (cur)");
   is($im->errstr, "Write failure: limit reached", "check message");
   $im->_set_error('');
 
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(22), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(22)),
      "third write (bmi) should fail (32-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
   $im->_set_error('');
 
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(62), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(62)),
      "fourth write (data) should fail (32-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
   $im->_set_error('');
 
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(462), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(462)),
      "mask write should fail (32-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
 }
@@ -139,14 +147,14 @@ use Imager ':handy';
   $im->addcolors(colors => [ $red, $blue ]);
   $im->box(filled => 1, color => $red, ymax => 5);
   $im->box(filled => 1, color => $blue, ymin => 6);
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(22), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(22)),
      "third write (bmi) should fail (1-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
   
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(66), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(66)),
      "fourth write (palette) should fail (1-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(74), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(74)),
      "fifth write (image) should fail (1-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
   my $data;
@@ -165,14 +173,14 @@ use Imager ':handy';
   $im->addcolors(colors => [ ($red, $blue) x 8 ]);
   $im->box(filled => 1, color => $red, ymax => 5);
   $im->box(filled => 1, color => $blue, ymin => 6);
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(22), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(22)),
      "third write (bmi) should fail (4-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
   
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(66), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(66)),
      "fourth write (palette) should fail (4-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(130), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(130)),
      "fifth write (image) should fail (4-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
   my $data;
@@ -191,17 +199,17 @@ use Imager ':handy';
   $im->addcolors(colors => [ ($red, $blue) x 9 ]);
   $im->box(filled => 1, color => $red, ymax => 5);
   $im->box(filled => 1, color => $blue, ymin => 6);
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(22), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(22)),
      "third write (bmi) should fail (8-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
   
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(62), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(62)),
      "fourth write (palette) should fail (8-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(62 + 1024), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(62 + 1024)),
      "fifth write (image) should fail (8-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
-  ok(!$im->write(type => 'ico', callback => WriteLimit->new(62 + 1024 + 10), maxbuffer => 1),
+  ok(!$im->write(type => 'ico', io => limited_write_io(62 + 1024 + 10)),
      "sixth write (zeroes) should fail (8-bit)");
   is($im->errstr, "Write failure: limit reached", "check message");
   my $data;
@@ -220,17 +228,19 @@ sub write_failure {
   return;
 }
 
-package WriteLimit;
-use overload 
-  '&{}' => \&limited_write,
-  'bool' => sub { 1 };
+sub limited_write_io {
+  my ($limit) = @_;
 
-sub new {
-  my ($class, $limit) = @_;
+  my $io = Imager::io_new_cb(limited_write($limit), undef, undef, undef, 1);
+  $io->set_buffered(0);
 
-  bless 
-    { 
-     do_write =>
+  return $io;
+}
+
+sub limited_write {
+  my ($limit) = @_;
+
+  return
      sub {
        my ($data) = @_;
        $limit -= length $data;
@@ -243,11 +253,5 @@ sub new {
          Imager::i_push_error(0, "limit reached");
          return;
        }
-     }
-    },$class;
-}
-
-sub limited_write {
-  my ($self) = @_;
-  return $self->{do_write};
+     };
 }