The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

###############################################################################
#
# A test for Spreadsheet::ParseExcel.
#
# Tests for the row and column size conversions.
#
# reverse('©'), August 2009, John McNamara, jmcnamara@cpan.org
#

use strict;

use Spreadsheet::ParseExcel;
use Test::More tests => 37;

###############################################################################
#
# Test cases for row/column sizes extracted from an Excel workbook.
#
my @col_testcases = (
    # Pix      Internal   User
    [ 1,       36,        0.08   ],
    [ 2,       73,        0.17   ],
    [ 3,       109,       0.25   ],
    [ 4,       146,       0.33   ],
    [ 5,       182,       0.42   ],
    [ 6,       219,       0.50   ],
    [ 7,       256,       0.58   ],
    [ 8,       292,       0.67   ],
    [ 9,       329,       0.75   ],
    [ 10,      365,       0.83   ],
    [ 11,      402,       0.92   ],
    [ 12,      438,       1.00   ],
    [ 13,      475,       1.14   ],
    [ 14,      512,       1.29   ],
    [ 15,      548,       1.43   ],
    [ 16,      585,       1.57   ],
    [ 17,      621,       1.71   ],
    [ 18,      658,       1.86   ],
    [ 19,      694,       2.00   ],
    [ 20,      731,       2.14   ],
    [ 21,      768,       2.29   ],
    [ 22,      804,       2.43   ],
    [ 23,      841,       2.57   ],
    [ 24,      877,       2.71   ],
    [ 25,      914,       2.86   ],
    [ 26,      950,       3.00   ],
    [ 27,      987,       3.14   ],
    [ 28,      1024,      3.29   ],
    [ 29,      1060,      3.43   ],
    [ 30,      1097,      3.57   ],
    [ 64,      2340,      8.43   ],
    [ 399,     14592,     56.29  ],
    [ 400,     14628,     56.43  ],
    [ 401,     14665,     56.57  ],
    [ 999,     36534,     142.00 ],
    [ 1000,    36571,     142.14 ],
    [ 1001,    36608,     142.29 ],
);

# This test data isn't used for now since the row conversion is straightforward.
my @row_testcases = (
    # Pix      Internal   User
    [ 1,       15,        0.75  ],
    [ 3,       45,        2.25  ],
    [ 4,       60,        3     ],
    [ 5,       75,        3.75  ],
    [ 7,       105,       5.25  ],
    [ 8,       120,       6     ],
    [ 9,       135,       6.75  ],
    [ 15,      225,       11.25 ],
    [ 16,      240,       12    ],
    [ 17,      255,       12.75 ],
    [ 31,      465,       23.25 ],
    [ 32,      480,       24    ],
    [ 33,      495,       24.75 ],
    [ 63,      945,       47.25 ],
    [ 64,      960,       48    ],
    [ 65,      975,       48.75 ],
);


###############################################################################
#
# Run tests.
#
my $parser = Spreadsheet::ParseExcel->new();

for my $test_ref (@col_testcases) {

    my $excel_width = $test_ref->[1];
    my $user_width  = $test_ref->[2];
    my $got         = $parser->_convert_col_width($excel_width);

    is( $got, $user_width );
}

__END__