#!/usr/bin/perl -w ############################################################################### # # A test for Spreadsheet::WriteExcel. # # Check that we calculate the correct bucket size and number for the EXTSST # record. The data is taken from actual Excel files. # # reverse('©'), October 2007, John McNamara, jmcnamara@cpan.org # use strict; use Spreadsheet::WriteExcel; use Test::More tests => 56; ############################################################################### # # Tests setup # my $test_file = "temp_test_file.xls"; my $workbook = Spreadsheet::WriteExcel->new($test_file); my @tests = ( # Unique Number of Bucket # strings buckets size [0, 0, 8], [1, 1, 8], [7, 1, 8], [8, 1, 8], [15, 2, 8], [16, 2, 8], [17, 3, 8], [32, 4, 8], [33, 5, 8], [64, 8, 8], [128, 16, 8], [256, 32, 8], [512, 64, 8], [1023, 128, 8], [1024, 114, 9], [1025, 114, 9], [2048, 121, 17], [4096, 125, 33], [4097, 125, 33], [8192, 127, 65], [8193, 127, 65], [9000, 127, 71], [10000, 127, 79], [16384, 128, 129], [262144, 128, 2049], [1048576, 128, 8193], [4194304, 128, 32769], [8257536, 128, 64513], ); for my $test (@tests) { my $str_unique = $test->[0]; $workbook->{_str_unique} = $str_unique ; $workbook->_calculate_extsst_size(); is($workbook->{_extsst_buckets}, $test->[1], " \tBucket number for $str_unique strings"); is($workbook->{_extsst_bucket_size}, $test->[2], " \tBucket size for $str_unique strings"); } # Clean up. $workbook->{_str_unique} = 0; $workbook->close(); unlink $test_file;