#!/usr/bin/perl -w ############################################################################### # # A test for Spreadsheet::WriteExcelXML. # # Tests the print_rows and repeat_columns methods. # # reverse('©'), November 2004, John McNamara, jmcnamara@cpan.org # use strict; use Spreadsheet::WriteExcelXML; use Test::More tests => 6; ############################################################################## # # Create a new Excel XML file with different formats on each page. # my $test_file = "temp_test_file.xml"; my $workbook = Spreadsheet::WriteExcelXML->new($test_file); # We use 'Sheet n' worksheet names so that they are single quoted in the # Excel XML output. my $worksheet1 = $workbook->add_worksheet('Sheet 1'); $worksheet1->repeat_rows(0); my $worksheet2 = $workbook->add_worksheet('Sheet 2'); $worksheet2->repeat_columns('A:A'); my $worksheet3 = $workbook->add_worksheet('Sheet 3'); $worksheet3->repeat_rows(2, 3); my $worksheet4 = $workbook->add_worksheet('Sheet 4'); $worksheet4->repeat_columns('B:E'); my $worksheet5 = $workbook->add_worksheet('Sheet 5'); $worksheet5->repeat_rows(0); $worksheet5->repeat_columns('A:A'); my $worksheet6 = $workbook->add_worksheet('Sheet 6'); $worksheet6->repeat_rows(2, 3); $worksheet6->repeat_columns('B:E'); $workbook->close(); ############################################################################## # # Re-open and reread the Excel file. # open XML, $test_file or die "Couldn't open $test_file: $!\n"; my @swex_data = extract_names(*XML); close XML; unlink $test_file; ############################################################################## # # Read the data from the Excel file in the __DATA__ section # my @test_data = extract_names(*DATA); ############################################################################## # # Pad the SWEX and test data if necessary. # push @swex_data, ('') x (@test_data -@swex_data); push @test_data, ('') x (@swex_data -@test_data); ############################################################################## # # Run the tests # for my $i (0 .. @test_data -1) { is($swex_data[$i], $test_data[$i], "Testing print_area()"); } ############################################################################## # # Extract sub-elements from a given filehandle. # sub extract_names { my $fh = $_[0]; my $in_elem = 0; my $element = ''; my @elements; while (<$fh>) { s/^\s+([<| ])/$1/; s/\s+$//; $in_elem = 1 if (m[^]) { push @elements, $element; $in_elem = 0; $element = ''; } } return @elements; } # The following data was generated by Excel. __DATA__ 9 -3 0 False False 9 -3 0 3 C1 False False 9 -3 0 3 2 R3:R4 False False 9 -3 0 3 1 1 False False 9 -3 0 False False 9 -3 0 False False False False