The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

###############################################################################
#
# A test for Spreadsheet::ParseExcel.
#
# Test for get_active_sheet
#

use strict;

use Test::More tests => 45;

use Spreadsheet::ParseExcel;

##############################################################################
#
# Tests.
#

my $parser = Spreadsheet::ParseExcel->new;

# Workbook saved with sheet2 (index 1) open

my $book = $parser->parse( "t/excel_files/TestActiveSheet.xls" );
my $active = $book->get_active_sheet;
is($active, 1, 'Correct sheet');

my $ws = $book->worksheet('Sheet2');

my %expect = (
              A3 => { },
              # Each entry adds 6 tests
              A6 => { desc => q(http://www.example.com),
                      link => q(http://www.example.com/),
                    },
              B6 => { desc => q(http://www.example.com#foo),
                      link => q(http://www.example.com/#foo),
                    },
              C6 => { desc => q(file:///c:\\nodir\\nofile.txt),
                      link => q(file:///c:\\nodir\\nofile.txt),
                    },
              D6 => { desc => q(\\\\server\\quirks\\sometest.bat),
                      link => q(file:///\\\\server\\quirks\\sometest.bat),
                    },
              E6 => { desc => q(TestActiveSheet.xls),
                      rel  => 1,
                      link => q(TestActiveSheet.xls),
                    },
              F6 => { desc => q(Sheet2!A7),
                      link => q(#Sheet2%21A7),
                    },
              A7 => { desc => q(www.example.com),
                      link => q(http://www.example.com/),
                    },
              B7 => { desc => q(www.example.com#foo),
                      link => q(http://www.example.com/#foo),
                    },
              C7 => { desc => q(c:\\nodir\\nofile.txt),
                      link => q(file:///c:\\nodir\\nofile.txt),
                    },
              D7 => { desc => q(SMB Link Sometest.bat),
                      link => q(file:///\\\\server\\quirks\\sometest.bat),
                    },
              E7 => { desc => q(Rel: TestActiveSheet.xls),
                      rel  => 1,
                      link => q(TestActiveSheet.xls),
                    },
              F7 => { desc => q(mailto:fred@example.net),
                      link => q(mailto:fred@example.net),
                    },
              A9 => { desc => q(file:///..\\..\\zipple.dat),
                      link => q(../../zipple.dat),
                    },
              A10 => { desc => q(ftp://user:pass@example.net/pub/manuals/Excel.doc),
                       link => q(ftp://user:pass@example.net/pub/manuals/Excel.doc),
                    },
              );

foreach my $t (sort keys %expect) {
    my $link = $expect{$t}{link};
    my $desc = $expect{$t}{desc};
    my $rel = $expect{$t}{rel};
    if( $rel ) {
        $link = "file:///t/excel_files/$link";
    }

    $t =~ m/^(.)(\d+)$/ or die;
    my $cell = $ws->get_cell( $2-1, (ord($1)-ord('A')) );
    ok( defined $cell, "Cell $t defined" );
    next unless defined $cell;

    my $hl = $cell->get_hyperlink;
    if( !defined $link ) {
        is( $hl, undef, "Cell $t should have no link" );
        next;
    }
    ok( defined $hl->[0] && $hl->[0] eq $desc, "Cell $t description match" );
    ok( defined $hl->[1] && $hl->[1] eq $link, "Cell $t link match" );
}



__END__