The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -w
use strict;
use Imager;
use Test::More tests => 14;

unshift @INC, "t";

ok(Imager::Font->register(type => "test",
			  class=>"GoodTestFont",
			  files => "\\.ppm\$"),
   "register a test font");

ok(Imager::Font->register(type => "bad",
			  class => "BadTestFont",
			  files => "\\.ppm\$"),
   "register a bad test font");

ok(!Imager::Font->register(), "no register parameters");
like(Imager->errstr, qr/No type parameter/, "check message");

ok(!Imager::Font->register(type => "bad1"), "no class parameter");
like(Imager->errstr, qr/No class parameter/, "check message");

ok(!Imager::Font->register(type => "bad2", class => "BadFont", files => "**"),
   "bad files parameter");
is(Imager->errstr, "files isn't a valid regexp", "check message");

Imager::Font->priorities("bad", "test");

# RT #62855
# previously we'd select the first file matched font driver, even if
# it wasn't available, then crash loading it.

SKIP:
{
  my $good;
  ok(eval {
    $good = Imager::Font->new(file => "testimg/penguin-base.ppm");
  }, "load good font avoiding RT 62855")
    or skip("Failed to load", 1);
  ok($good->isa("GoodTestFont"), "and it's the right type");
}


use Imager::Font::Test;

# check string() and align_string() handle an empty image
{
  my $font = Imager::Font::Test->new;
  my $empty = Imager->new;
  ok(!$empty->string(text => "foo", x => 0, y => 10, size => 10, font => $font),
     "can't draw text on an empty image");
  is($empty->errstr, "string: empty input image",
     "check error message");
  ok(!$empty->align_string(text => "foo", x => 0, y => 10, size => 10, font => $font),
     "can't draw text on an empty image");
  is($empty->errstr, "align_string: empty input image",
     "check error message");
}