# -*- perl -*-

# t/01_basic.t - basic tests

use strict;
use Test::More tests => 31;

my $dbf;
my $debug = open $dbf,'>','debug.out';

BEGIN {
    local $ENV{MODULE_OPTIONAL_SKIP} = 1;

#01
    use_ok( 'File::Wildcard' ); 
}

# Run in both case sensitive and insensitive mode
for my $insens (0, 1) {

    my $mods = File::Wildcard->new (path => 'lib/File/Wildcard.pm',
    			case_insensitive => $insens,
			debug_output => $dbf,
                               debug => $debug);

#02
    isa_ok ($mods, 'File::Wildcard', "return from new");

#03 
    like ($mods->next, qr'lib/File/Wildcard.pm'i, 'Simple case, no wildcard');

#04
    ok (!$mods->next, 'Only found one file');

    my @dirs = split m'/', 'lib/File/Wildcard.*';
    
    $mods = File::Wildcard->new (path => \@dirs,
    				absolute => 0,
    			case_insensitive => $insens,
			debug_output => $dbf,
                            debug => $debug);

#05
    isa_ok ($mods, 'File::Wildcard', "return from new");

#06 
    like ($mods->next, qr'lib/File/Wildcard\.pm'i, 'Simple asterisk');

#07
    ok (!$mods->next, 'Only found one file');

    $mods = File::Wildcard->new (path => 'lib/File/Wild????.pm',
    			case_insensitive => $insens,
			debug_output => $dbf,
                            debug => $debug);

#08
    isa_ok ($mods, 'File::Wildcard', "return from new");

#09
    like ($mods->next, qr'lib/File/Wildcard\.pm'i, 'single char wildcards');

#10
    ok (!$mods->next, 'Only found one file');

    $mods = File::Wildcard->new (path => 'lib/F*/Wildcard.pm',
    			case_insensitive => $insens,
			debug_output => $dbf,
                            debug => $debug);

    my $match = $mods->match;
    my @capts = $match =~ /\(.+?\)/;

#11
    is( scalar(@capts), 1, "Captures from regexp");
    
#12
    isa_ok ($mods, 'File::Wildcard', "return from new");

    my @found = map {lc $_} $mods->all;

#13 
    is_deeply (\@found, [qw( lib/file/wildcard.pm )], 
             'Wildcard further back in path');

    $mods = File::Wildcard->new (path => './//Wildcard.pm',
    			case_insensitive => $insens,
			debug_output => $dbf,
                            debug => $debug,
                             sort => 1);

#14
    isa_ok ($mods, 'File::Wildcard', "(ellipsis) return from new");

    @found = map {lc $_} $mods->all;

#15 
    is_deeply (\@found, [qw( blib/lib/file/wildcard.pm lib/file/wildcard.pm )], 
             'Ellipsis found blib and lib modules');

# play it again, Sam

    $mods->reset;
    @found = map {lc $_} $mods->all;

#16 
   is_deeply (\@found, [qw( blib/lib/file/wildcard.pm lib/file/wildcard.pm )], 
             'Ellipsis found blib and lib modules');

}

undef $dbf;
unlink 'debug.out';
