The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl 
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'

#########################

# change 'tests => 1' to 'tests => last_test_to_print';

use strict;
use Test;
BEGIN { plan tests => 396 };
use Graphics::MNG;
ok(1); # If we made it this far, we're ok.

#########################

# Insert your test code below, the Test module is use()ed here so read
# its man page ( perldoc Test ) for help writing this test script.

use Graphics::MNG qw( MNG_OUTOFMEMORY );
ok(1);   # loaded an export-ok constant

sub constants_testing()
{
   use Graphics::MNG qw( :all %EXPORT_TAGS );

   # get a list of things in the 'all' tag of the %EXPORT_TAGS hash,
   # and see what doesn't overlap with anything else...

   foreach my $category ( sort keys %EXPORT_TAGS )
   {
      next if $category =~ /fns$/;
      next if $category eq 'all';
    # print "Processing category $category\n";

      foreach my $item ( @{ %EXPORT_TAGS->{$category} } )
      {
         $item =~ s/^&//;  # this is so very important...

         my $eval = qq( return $item() );
         my $out = eval "$eval";
      #  print "$item => $out\n" if $out;

         if ( $@ )
         {
            if ( $@ =~ /vendor has not defined/i )
            {
               ok( 1, 0, "$item (in $category) not supplied by vendor" );
            }
            elsif ( $@ =~ /not enough arguments/i )
            {
               skip( "$item (in $category) needs args, probably OK",1 );
            }
            elsif ( $@ =~ /syntax error/i )
            {
               ok( 1, 0, "$item (in $category) syntax error" );
            }
            else
            {
               ok( 1, 0, "$item (in $category) unknown error: $@" );
            }
         }
         elsif ( $out =~ /::/ )
         {
            ok( 1, 0, "$item (in $category) isn't a constant" );
         }
         else
         {
         #  print "$item => $out\n" if $item =~ /TEXT/;
            ok( 1, 1, "testing $item (in $category)" );
         }
      }
   }
}

### here's where it all happens...
constants_testing();
exit(0);