#!/usr/bin/perl -w ############################################################################### # # A test for Spreadsheet::WriteExcelXML. # # Tests the page setup methods. # # reverse('©'), November 2004, John McNamara, jmcnamara@cpan.org # use strict; use Spreadsheet::WriteExcelXML; use Test::More tests => 34; my @captions; ############################################################################## # # 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); my $worksheet; # The captions are written to the worksheet so that it can be inspected # visually if required. # Test push @captions, "Testing set_landscape()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_landscape(); # Test: Portrait is the default so the following shouldn't have an effect. push @captions, "Testing set_portrait(). No effect."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_portrait(); # Test: push @captions, "Testing set_paper(), Default. No effect."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_paper(); # Test: push @captions, "Testing set_paper(), A3."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_paper(8); # Test: push @captions, "Testing center_horizontally()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->center_horizontally(); # Test: push @captions, "Testing center_vertically()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->center_vertically(); # Test: push @captions, "Testing set_margins()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_margins(0.5); # Test: push @captions, "Testing set_margins_LR()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_margins_LR(0.5); # Test: push @captions, "Testing set_margins_TB()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_margins_TB(0.5); # Test: push @captions, "Testing set_margin_left()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_margin_left(0.5); # Test: push @captions, "Testing set_margin_right()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_margin_right(0.5); # Test: push @captions, "Testing set_margin_top()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_margin_top(0.5); # Test: push @captions, "Testing set_margin_bottom()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_margin_bottom(0.5); # Test: push @captions, "Testing the margin defaults. No effect."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_margin_left (0.75); $worksheet->set_margin_right (0.75); $worksheet->set_margin_top (1); $worksheet->set_margin_bottom(1); # Test: push @captions, "Testing set_header."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_header('&LHello'); # Test: push @captions, "Testing set_footer."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_footer('&CHello'); # Test: push @captions, "Testing set_header with margin."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_header('&LHello', 2); # Test: push @captions, "Testing Testing set_footer with margin."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_footer('&CHello', 2); # Test: push @captions, "Testing hide_gridlines. No effect."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->hide_gridlines(1); # Test: push @captions, "Testing hide_gridlines. Screen gridlines off."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->hide_gridlines(2); # Test: push @captions, "Testing print_gridlines."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->print_gridlines(); # Test: push @captions, "Testing print_gridlines."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->print_gridlines(1); # Test: push @captions, "Testing print_gridlines. No effect."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->print_gridlines(0); # Test: push @captions, "Testing print_row_col_headers."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->print_row_col_headers(); # Test: push @captions, "Testing fit_to_pages. 1 x 1."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->fit_to_pages(1); # Test: push @captions, "Testing fit_to_pages. 1 x 1."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->fit_to_pages(1, 1); # Test: push @captions, "Testing fit_to_pages. 2 x 1."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->fit_to_pages(2); # Test: push @captions, "Testing fit_to_pages. 2 x 3."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->fit_to_pages(2, 3); # Test: push @captions, "Testing set_print_scale."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_print_scale(75); # Test: push @captions, "Testing set_h_pagebreaks()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_h_pagebreaks(2); # Test: push @captions, "Testing set_h_pagebreaks()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_h_pagebreaks(2, 4, 6); # Test: push @captions, "Testing set_v_pagebreaks()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_v_pagebreaks(2); # Test: push @captions, "Testing set_v_pagebreaks()."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_v_pagebreaks(2, 4, 6); # Test: push @captions, "Testing vertical and horizontal pagebreaks."; $worksheet = $workbook->add_worksheet(); $worksheet->write('A1', $captions[-1]); $worksheet->set_h_pagebreaks(2); $worksheet->set_v_pagebreaks(3); $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_setup(*XML); close XML; unlink $test_file; ############################################################################## # # Read the data from the Excel file in the __DATA__ section # my @test_data = extract_setup(*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], $captions[$i]); } ############################################################################## # # Extract elements from a given filehandle. # sub extract_setup { my $fh = $_[0]; my $in_opt = 0; my $setup = ''; my @options; while (<$fh>) { s/^\s+([<| ])/$1/; s/\s+$//; next if m[^]; next if m[^]; next if m[^]; next if m[^9]; next if m[^]; next if m[^]; next if m[^]) { # Remove Excel's default empty . $setup =~ s[][]; push @options, $setup; $in_opt = 0; $setup = ''; } } return @options; } # The following data was generated by Excel. __DATA__ 11.5606 10005 10005 120 135 False False Testing set_landscape().
0 False False
Testing set_portrait(). No effect.
False False
Testing set_paper(), Default. No effect.
False False
Testing set_paper(), A3.
8 0 False False
Testing center_horizontally().
0 False False
Testing center_vertically().
0 False False
Testing set_margins().
False False
Testing set_margins_LR().
False False
Testing set_margins_TB().
False False
Testing set_margin_left().
False False
Testing set_margin_right().
False False
Testing set_margin_top().
False False
Testing set_margin_bottom().
False False
Testing the margin defaults. No effect.
False False
Testing set_header.
False False Testing set_footer.