#!/usr/bin/perl -w ############################################################################### # # A test for Spreadsheet::WriteExcel. # # Check that max/min columns of the Excel ROW record are written correctly. # # reverse('©'), October 2007, John McNamara, jmcnamara@cpan.org # use strict; use Spreadsheet::WriteExcel; use Test::More tests => 7; ############################################################################### # # Tests setup # my $test_file = "temp_test_file.xls"; my $workbook = Spreadsheet::WriteExcel->new($test_file); my $worksheet; my @rows; my @tests; my $row; my $col1; my $col2; $workbook->compatibility_mode(1); ############################################################################### # # Test 1. # $row = 1; $col1 = 0; $col2 = 0; $worksheet = $workbook->add_worksheet(); $worksheet->set_row($row, 15); push @tests, [ " \tset_row(): row = $row, col1 = $col1, col2 = $col2", { col_min => 0, col_max => 0, } ]; ############################################################################### # # Test 2. # $row = 2; $col1 = 0; $col2 = 0; $worksheet = $workbook->add_worksheet(); $worksheet->write($row, $col1, 'Test'); $worksheet->write($row, $col2, 'Test'); push @tests, [ " \twrite(): row = $row, col1 = $col1, col2 = $col2", { col_min => 0, col_max => 1, } ]; ############################################################################### # # Test 3. # $row = 3; $col1 = 0; $col2 = 1; $worksheet = $workbook->add_worksheet(); $worksheet->write($row, $col1, 'Test'); $worksheet->write($row, $col2, 'Test'); push @tests, [ " \twrite(): row = $row, col1 = $col1, col2 = $col2", { col_min => 0, col_max => 2, } ]; ############################################################################### # # Test 4. # $row = 4; $col1 = 1; $col2 = 1; $worksheet = $workbook->add_worksheet(); $worksheet->write($row, $col1, 'Test'); $worksheet->write($row, $col2, 'Test'); push @tests, [ " \twrite(): row = $row, col1 = $col1, col2 = $col2", { col_min => 1, col_max => 2, } ]; ############################################################################### # # Test 5. # $row = 5; $col1 = 1; $col2 = 255; $worksheet = $workbook->add_worksheet(); $worksheet->write($row, $col1, 'Test'); $worksheet->write($row, $col2, 'Test'); push @tests, [ " \twrite(): row = $row, col1 = $col1, col2 = $col2", { col_min => 1, col_max => 256, } ]; ############################################################################### # # Test 6. # $row = 6; $col1 = 255; $col2 = 255; $worksheet = $workbook->add_worksheet(); $worksheet->write($row, $col1, 'Test'); $worksheet->write($row, $col2, 'Test'); push @tests, [ " \twrite(): row = $row, col1 = $col1, col2 = $col2", { col_min => 255, col_max => 256, } ]; ############################################################################### # # Test 7. # $row = 7; $col1 = 2; $col2 = 9; $worksheet = $workbook->add_worksheet(); $worksheet->set_row($row, 15); $worksheet->write($row, $col1, 'Test'); $worksheet->write($row, $col2, 'Test'); push @tests, [ " \tset_row + write(): row = $row, col1 = $col1, col2 = $col2", { col_min => 2, col_max => 10, } ]; # Read in the row records $workbook->{_biff_only} = 1; $workbook->close(); open XLSFILE, $test_file or die "Couldn't open test file\n"; binmode XLSFILE; my $header; my $data; while (read XLSFILE, $header, 4) { my ($record, $length) = unpack 'vv', $header; read XLSFILE, $data, $length; # Read the row records only. next unless $record == 0x0208; my ($col_min, $col_max) = unpack 'x2 vv', $data; push @rows, { col_min => $col_min, col_max => $col_max, }; } for my $i (0 .. @tests -1) { is_deeply($rows[$i], $tests[$i]->[1], $tests[$i]->[0]); } # Clean up. unlink $test_file; __END__