#!/usr/bin/perl -w ############################################################################### # # A test for Spreadsheet::WriteExcel. # # Check that the Excel DIMENSIONS record is written correctly. # # reverse('©'), October 2007, John McNamara, jmcnamara@cpan.org # use strict; use Spreadsheet::WriteExcel; use Test::More tests => 31; ############################################################################### # # Tests setup # my $test_file = 'temp_test_file.xls'; my $workbook = Spreadsheet::WriteExcel->new($test_file); my $format = $workbook->add_format(); my $worksheet; my @dims = qw(row_min row_max col_min col_max); my $data; my $caption; my %results; my %expected; my $error; my $smiley = pack "n", 0x263a; ############################################################################### # # Test 1. # $caption = " \tNo worksheet cell data."; $worksheet = $workbook->add_worksheet(); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (0, 0, 0, 0); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 2. # $caption = " \tData in cell (0, 0)."; $worksheet = $workbook->add_worksheet(); $worksheet->write(0, 0, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (0, 1, 0, 1); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 3. # $caption = " \tData in cell (0, 255)."; $worksheet = $workbook->add_worksheet(); $worksheet->write(0, 255, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (0, 1, 255, 256); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 4. # $caption = " \tData in cell (65535, 0)."; $worksheet = $workbook->add_worksheet(); $worksheet->write(65535, 0, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (65535, 65536, 0, 1); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 5. # $caption = " \tData in cell (65535, 255)."; $worksheet = $workbook->add_worksheet(); $worksheet->write(65535, 255, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (65535, 65536, 255, 256); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 6. # $caption = " \tData in cell (5, 3)."; $worksheet = $workbook->add_worksheet(); $worksheet->write(5, 3, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 7. # $caption = " \tset_row() for row 4."; $worksheet = $workbook->add_worksheet(); $worksheet->set_row(4, 20); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (4, 5, 0, 0); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 8. # $caption = " \tset_row() for row 4..6."; $worksheet = $workbook->add_worksheet(); $worksheet->set_row(4, 20); $worksheet->set_row(5, 20); $worksheet->set_row(6, 20); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (4, 7, 0, 0); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 9. # $caption = " \tset_column() for row 4."; $worksheet = $workbook->add_worksheet(); $worksheet->set_column(4, 4, 20); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (0, 0, 0, 0); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 10. # $caption = " \tset_column() for row 4..6."; $worksheet = $workbook->add_worksheet(); $worksheet->set_column(4, 6, 20); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (0, 0, 0, 0); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 11. # $caption = " \tData in cell (0, 0) and set_row() for row 4."; $worksheet = $workbook->add_worksheet(); $worksheet->write(0, 0, 'Test'); $worksheet->set_row(4, 20); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (0, 5, 0, 1); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 12. # $caption = " \tData in cell (0, 0) and set_row() for row 4. Reverse order"; $worksheet = $workbook->add_worksheet(); $worksheet->set_row(4, 20); $worksheet->write(0, 0, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (0, 5, 0, 1); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 13. # $caption = " \tData in cell (5, 3) and set_row() for row 4."; $worksheet = $workbook->add_worksheet(); $worksheet->write(5, 3, 'Test'); $worksheet->set_row(4, 20); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (4, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 14. # $caption = " \tComment in cell (5, 3)."; $worksheet = $workbook->add_worksheet(); $worksheet->write_comment(5, 3, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 15 + 16. # $caption = " \tundef value for row"; $worksheet = $workbook->add_worksheet(); { # Ignore undef warning. $^W = 0; $error = $worksheet->write_string(undef, 1, 'Test'); }; $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (0, 0, 0, 0); is_deeply(\%results, \%expected, $caption); is (-2, $error, $caption . ' (return value)'); ############################################################################### # # Test 17 + 18. # $caption = " \tundef value for col"; $worksheet = $workbook->add_worksheet(); $error = $worksheet->write(1, undef, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (0, 0, 0, 0); is_deeply(\%results, \%expected, $caption); is (-2, $error, $caption . ' (return value)'); ############################################################################### # # Test 19. # $caption = " \tData in cell (5, 3) and (10, 1)."; $worksheet = $workbook->add_worksheet(); $worksheet->write(5, 3, 'Test'); $worksheet->write(10, 1, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 11, 1, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 20. # $caption = " \tData in cell (5, 3) and (10, 5)."; $worksheet = $workbook->add_worksheet(); $worksheet->write(5, 3, 'Test'); $worksheet->write(10, 5, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 11, 3, 6); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 21. # $caption = " \twrite_string()"; $worksheet = $workbook->add_worksheet(); $worksheet->write_string(5, 3, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 22. # $caption = " \twrite_number()"; $worksheet = $workbook->add_worksheet(); $worksheet->write_number(5, 3, 5); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 23. # $caption = " \twrite_url()"; $worksheet = $workbook->add_worksheet(); $worksheet->write_url(5, 3, 'http://www.perl.com'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 24. # $caption = " \twrite_formula()"; $worksheet = $workbook->add_worksheet(); $worksheet->write_formula(5, 3, '= 1 + 2'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 25. # $caption = " \twrite_string()"; $worksheet = $workbook->add_worksheet(); $worksheet->write_string(5, 3, 'Test'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 26. # $caption = " \twrite_blank()"; $worksheet = $workbook->add_worksheet(); $worksheet->write_string(5, 3, $format); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 27. # $caption = " \twrite_blank(). No format"; $worksheet = $workbook->add_worksheet(); $worksheet->write_string(5, 3); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (0, 0, 0, 0); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 28. # $caption = " \twrite_utf16be_string()"; $worksheet = $workbook->add_worksheet(); $worksheet->write_utf16be_string(5, 3, $smiley); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 29. # $caption = " \twrite_utf16le_string()"; $worksheet = $workbook->add_worksheet(); $worksheet->write_utf16le_string(5, 3, $smiley); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 30. # $caption = " \trepeat_formula()"; $worksheet = $workbook->add_worksheet(); my $formula = $worksheet->store_formula('=A1 * 3 + 50'); $worksheet->repeat_formula(5, 3, $formula, $format, 'A1', 'A2'); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 6, 3, 4); is_deeply(\%results, \%expected, $caption); ############################################################################### # # Test 31. # $caption = " \tmerge_range()"; $worksheet = $workbook->add_worksheet(); $format = $workbook->add_format(); $worksheet->merge_range('C6:E8', 'Test', $format); $data = $worksheet ->_store_dimensions(); @results {@dims} = unpack 'x4 VVvv', $data; @expected{@dims} = (5, 8, 2, 5); is_deeply(\%results, \%expected, $caption); # Clean up. $workbook->close(); unlink $test_file; __END__