The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
BEGIN {
    if ($ENV{PERL_CORE}) {
	chdir 't' if -d 't';
	@INC = ("../lib", "lib/compress");
    }
}

use lib qw(t t/compress);
use strict;
use warnings;
use bytes;

use Test::More ;
use CompTestUtils;


BEGIN {
    # use Test::NoWarnings, if available
    my $extra = 0 ;
    $extra = 1
        if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };

    plan tests => 355 + $extra ;
}


{
    use Compress::Raw::Zlib ;
        
    my %all;
    for my $symbol (@Compress::Raw::Zlib::DEFLATE_CONSTANTS)
    {
        eval "defined Compress::Raw::Zlib::$symbol" ;
        $all{$symbol} = ! $@ ;
    }   
           
    my $pkg = 1;
   
    for my $module ( qw( Adapter::Deflate RawDeflate Deflate Gzip Zip )) 
    {
        ++ $pkg ; 
        eval <<EOM;
            package P$pkg;
            use Test::More ;
            use CompTestUtils;
        
            use IO::Compress::$module () ;
        
            ::title "IO::Compress::$module - no import" ;       
EOM
        is $@, "", "create package P$pkg";
        for my $symbol (@Compress::Raw::Zlib::DEFLATE_CONSTANTS)
        {
            if ( $all{$symbol})
            {
                eval "package P$pkg; defined IO::Compress::${module}::$symbol ;";            
                is $@, "", "  has $symbol";
            }
            else
            {
                ok 1, "  $symbol not available";
            }
        }        
    }    
    
    for my $module ( qw( Adapter::Deflate RawDeflate Deflate Gzip Zip )) 
    {
        for my $label (keys %Compress::Raw::Zlib::DEFLATE_CONSTANTS)
        {
            ++ $pkg ; 

            eval <<EOM;
                package P$pkg;
                use Test::More ;
                use CompTestUtils;
            
                use IO::Compress::$module qw(:$label) ;
            
                ::title "IO::Compress::$module - import :$label" ; 
          
EOM
            is $@, "", "create package P$pkg";
            
            for my $symbol (@{ $Compress::Raw::Zlib::DEFLATE_CONSTANTS{$label} } )
            {
                if ( $all{$symbol})
                {
                    eval "package P$pkg; defined $symbol ;";            
                    is $@, "", "  has $symbol";
                }
                else
                {
                    ok 1, "  $symbol not available";
                }                               
            }   
        }     
    }       
    
}