use strict;
use Test::More;

my @export_std = qw(
        id
        private
        public
        register
    );
    
my @export_rest = qw(
        options
        property
    );
    
my @additional = qw(
      DESTROY
      STORABLE_freeze
      STORABLE_thaw
    );
    
my @all_methods = ( @export_std, @export_rest, @additional );

plan tests =>   3 + @all_methods                # export_ok tests
            +   3 + @export_std + @additional   # :std tests
            +   3 + @all_methods                # :all tests
            ;

$|++; # keep stdout and stderr in order on Win32

#--------------------------------------------------------------------------#

package export_ok_test;
use Test::More;

pass( "setting package to 'export_ok_test'" );

require_ok( 'Class::InsideOut' );

Class::InsideOut->import( @export_std, @export_rest );

pass( "Importing all \@EXPORT_OK functions" );

can_ok( 'export_ok_test', $_ ) for (@export_std, @export_rest, @additional);

#--------------------------------------------------------------------------#

package export_tags_std_test;
use Test::More;

pass( "setting package to 'export_tags_std_test'" );

require_ok( 'Class::InsideOut' );

Class::InsideOut->import( ":std" );

pass( "Importing ':std' tag" );

can_ok( 'export_tags_std_test', $_ ) for (@export_std, @additional);


#--------------------------------------------------------------------------#

package export_tags_all_test;
use Test::More;

pass( "setting package to 'export_tags_all_test'" );

require_ok( 'Class::InsideOut' );

Class::InsideOut->import( ":all" );

pass( "Importing ':all' tag" );

can_ok( 'export_tags_all_test', $_ ) for (@all_methods);

