The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
# This is a feature: adding transparency changes the palette
# https://rt.cpan.org/Ticket/Display.html?id=40525

use Test::More tests => 12;

use_ok('GD');
my $gif = "t/test_data/tile.gif";
my $jpeg = "t/test_data/tile.jpeg";
my $frog = "t/test_data/frog.jpg";

my $im = GD::Image->newFromGif($gif);

$im->transparent( -1 );
is($im->transparent, -1, 'image is not transparent');

my $closest = $im->colorClosest( 24, 53, 62 );
$im->transparent( $im->colorClosest( 24, 53, 62 ) );

is( $im->transparent, $closest, "transparency preserves RGB before $closest" );
is( $im->transparent, $im->colorClosest( 24, 53, 62 ), 'transparency preserves RGB after' );

$im = GD::Image->newFromJpeg($jpeg);
$im->transparent( -1 );
is($im->transparent, -1, 'image is not transparent');

$closest = $im->colorClosest( 24, 53, 62 );
$im->transparent( $closest );

is( $im->transparent, $closest, 'transparency preserves RGB before' );

my ($t, $c) = ($im->transparent, $im->colorClosest( 24, 53, 62 ));
if ($t == $c) {
 TODO: {
    local $TODO = 'colorClosest ignores alpha';
    isnt( $t, $c, "Closest" );
  }
} else {
  isnt( $t, $c, "Closest" );
}
is( $im->transparent, $im->colorClosestAlpha( 24, 53, 62, 255 ), "ClosestAlpha" );

$im = GD::Image->newFromJpeg($frog);
$im->transparent( -1 );
is($im->transparent, -1, 'image is not transparent');

$closest = $im->colorClosest( 24, 53, 62 );
$im->transparent( $closest );
is( $im->transparent, $closest, 'transparency preserves RGB before' );

($t, $c) = ($im->transparent, $im->colorClosest( 24, 53, 62 ));
if ($t == $c) {
 TODO: {
    local $TODO = 'colorClosest ignores alpha';
    isnt( $t, $c, "Closest" );
  }
} else {
  isnt( $t, $c, "Closest" );
}
is( $im->transparent, $im->colorClosestAlpha( 24, 53, 62, 255 ), "ClosestAlpha" );