# $Id: text.t,v 1.17 2003/02/21 00:10:28 mgjv Exp $
use lib ".", "..";
BEGIN { require "t/lib.pl" }
use Test::More tests => 20;
use GD;
BEGIN { use_ok "GD::Text" }
# Test the default setup
$t = GD::Text->new();
ok ($t->is_builtin, "default font is builtin");
# Check some size parameters
$t->set_text("Some text");
($w, $h, $cu, $cd) = $t->get(qw(width height char_up char_down));
ok ($w==54 && $h==13 && $cu==13 && $cd==0, "default size params")
or diag("w=$w, h=$h, cu=$cu, cd=$cd");
# Change the text
$t->set_text("Some other text");
$w = $t->get('width');
ok ($w==90 && $h==13 && $cu==13 && $cd==0, "default size params 2")
or diag("w=$w, h=$h, cu=$cu, cd=$cd");
# Test loading of other builtin font
$t->set_font(gdGiantFont);
ok ($t->is_builtin, "gdGiantFont builtin");
# Test the width method
$w = $t->width("Foobar Banana");
is ($w, 117, "width method");
# And make sure it did not change the text in the object
$text = $t->get('text');
is ($text, "Some other text", "text did not change");
# Now check the Giant Font parameters
($w, $h, $cu, $cd) = $t->get(qw(width height char_up char_down));
ok ($w==135 && $h==15 && $cu==15 && $cd==0, "Giant font size")
or diag("w=$w, h=$h, cu=$cu, cd=$cd");
# Check that constructor with argument works
$t = GD::Text->new(text => 'FooBar Banana', font => gdGiantFont);
($w) = $t->get(qw(width)) if defined $t;
is ($w, 117, "constructor with args")
or diag("t=$t");
# Check multiple fonts in one go, number 1
$rc = $t->set_font(['foo', gdGiantFont, 'bar', gdTinyFont]);
ok ($rc, "multiple fonts");
SKIP:
{
skip "No TTF support", 6 unless ($t->can_do_ttf);
unless (ok (-d "t", "correct directory"))
{
diag("Running in incorrect directory: No 't' subdirectory.");
skip "Test script ran from incorrect directory", 5;
}
# Test loading of TTF
$rc = $t->set_font('Dustismo_Sans.ttf', 18);
ok ($rc && $t->is_ttf, "ttf set_font")
or diag("Your GD module incorrectly claims valid TTF support");
# Check multiple fonts in one go, number 2
$rc = $t->set_font(['Dustismo_Sans', gdGiantFont, 'bar'], 24);
like ($t->get('font'), qr/Dustismo_Sans.ttf$/, "ttf multiple fonts")
or diag("Font is '".$t->get('font')."'");
is ($t->get('ptsize'), 24, "ttf multiple fonts");
skip "Some TTF tests disabled: Freetype inconsistent", 2;
# Check some size parameters
@p = $t->get(qw(width height char_up char_down space));
is ("@p", "210 29 23 6 11", "ttf size param");
# Check that constructor with argument works
$t = GD::Text->new(text => 'FooBar', font =>'Dustismo_Sans');
@p = $t->get(qw(width height char_up char_down space)) if defined $t;
ok (defined $t && "@p" eq "38 12 10 2 5", "ttf constructor arg")
or diag("p = @p");
}
# Font Path tests
#
# Only do this if we have TTF font support, and if we're on a unix-like
# OS. Will adapt this once I have support for other OS's for the font
# path.
SKIP :
{
skip "no tff/nonunix", 4 unless ($t->can_do_ttf &&
$^O &&
$^O !~ /^MS(DOS|Win)/i &&
$^O !~ /VMS/i &&
$^O !~ /^MacOS/i &&
$^O !~ /os2/i &&
$^O !~ /^AmigaOS/i);
# Font Path
$t->font_path('demo/..:/tmp');
$rc = GD::Text::_find_TTF('Dustismo_Sans', 18);
is($rc,'./Dustismo_Sans.ttf', "font path no ttf");
$t->font_path('demo/..:.:/tmp');
$rc = GD::Text::_find_TTF('Dustismo_Sans', 18);
is($rc,'demo/../Dustismo_Sans.ttf', "font path multi");
$rc = GD::Text::_find_TTF('/usr/foo/font.ttf', 18);
is($rc,'/usr/foo/font.ttf', "font path abs");
$t->font_path(undef);
$rc = GD::Text::_find_TTF('Dustismo_Sans.ttf', 18);
is($rc,'./Dustismo_Sans.ttf', "named");
}