#!/usr/bin/perl ############################################################################### # # A test for Spreadsheet::ParseExcel. # # Regression tests for Cell properties and methods. # # The tests are mainly in pairs where direct hash access (old methodology) # is tested along with the method calls (>= version 0.50 methodology). # # reverse('©'), January 2009, John McNamara, jmcnamara@cpan.org # use strict; use warnings; use Spreadsheet::ParseExcel; use Test::More tests => 32; ############################################################################### # # Tests setup. # my $file = 't/excel_files/worksheet_01.xls'; my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->Parse($file); my $worksheet = $workbook->worksheet('Sheet3'); my $cell; my $format; my $got_1; my $got_2; my $expected_1; my $expected_2; my $caption; ############################################################################### # # Test 1, 2. Unformatted cell value. # $caption = "Test unformatted cell value"; $cell = $worksheet->get_cell( 2, 1 ); $expected_1 = 1; $got_1 = $cell->value(); $got_2 = $cell->Value(); $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 3, 4. Unformatted cell value from a formatted cell. # $caption = "Test unformatted cell value from a formatted cell"; $cell = $worksheet->get_cell( 3, 1 ); $expected_1 = 40177; $got_1 = $cell->unformatted(); $got_2 = $cell->{Val}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 5, 6. Formatted cell value. # $caption = "Test formatted cell value"; $cell = $worksheet->get_cell( 3, 1 ); $expected_1 = '2009/12/30'; $got_1 = $cell->value(); $got_2 = $cell->Value; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 7, 8. Cell format. # $caption = "Test cell format"; $cell = $worksheet->get_cell( 3, 1 ); $expected_1 = 170; $got_1 = $cell->get_format()->{FmtIdx}; $got_2 = $cell->{Format}->{FmtIdx};; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 9. Cell format. # $caption = "Test cell format string"; $cell = $worksheet->get_cell( 2, 1 ); $expected_1 = '@'; # TODO. Probably should be '' or 'general'. $got_1 = $workbook->{FmtClass}->FmtString( $cell, $workbook ); $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); ############################################################################### # # Test 10. Cell format. # $caption = "Test cell format string"; $cell = $worksheet->get_cell( 3, 1 ); $expected_1 = 'yyyy/mm/dd'; $got_1 = $workbook->{FmtClass}->FmtString( $cell, $workbook ); $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); ############################################################################### # # Test 11, 12. Cell type. # $caption = "Test cell type = Text"; $cell = $worksheet->get_cell( 2, 0 ); $expected_1 = 'Text'; $got_1 = $cell->type(); $got_2 = $cell->{Type}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 13, 14. Cell type. # $caption = "Test cell type = Numeric"; $cell = $worksheet->get_cell( 2, 1 ); $expected_1 = 'Numeric'; $got_1 = $cell->type(); $got_2 = $cell->{Type}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 15, 16. Cell type. # $caption = "Test cell type = Date"; $cell = $worksheet->get_cell( 3, 1 ); $expected_1 = 'Date'; $got_1 = $cell->type(); $got_2 = $cell->{Type}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 17, 18. Cell string encoding. # $caption = "Test cell encoding = Ascii"; $cell = $worksheet->get_cell( 5, 0 ); $expected_1 = 1; $expected_2 = undef; $got_1 = $cell->encoding(); $got_2 = $cell->{Code}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_2, $caption ); ############################################################################### # # Test 19, 20. Cell string encoding. # $caption = "Test cell encoding = Unicode"; $cell = $worksheet->get_cell( 5, 1 ); $expected_1 = 2; $expected_2 = 'ucs2'; $got_1 = $cell->encoding(); $got_2 = $cell->{Code}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_2, $caption ); ############################################################################### # # Test 21, 22. Cell string encoding. # # Switch file to get native encoding from Excel 5 file. $file = 't/excel_files/Test95J.xls'; $parser = Spreadsheet::ParseExcel->new(); $workbook = $parser->Parse($file); $worksheet = $workbook->worksheet(0); $caption = "Test cell encoding = Native"; $cell = $worksheet->get_cell( 1, 0 ); $expected_1 = 3; $expected_2 = '_native_'; $got_1 = $cell->encoding(); $got_2 = $cell->{Code}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_2, $caption ); # Switch back to main test worksheet. $file = 't/excel_files/worksheet_01.xls'; $parser = Spreadsheet::ParseExcel->new(); $workbook = $parser->Parse($file); $worksheet = $workbook->worksheet('Sheet3'); ############################################################################### # # Test 23, 24. Cell is un-merged. # $caption = "Test cell is un-merged"; $cell = $worksheet->get_cell( 6, 0 ); $expected_1 = undef; $got_1 = $cell->is_merged(); $got_2 = $cell->{Merged}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 25, 26. Cell is merged. # $caption = "Test cell is merged"; $cell = $worksheet->get_cell( 7, 0 ); $expected_1 = 1; $got_1 = $cell->is_merged(); $got_2 = $cell->{Merged}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 27, 28. Cell is merged. # $caption = "Test cell is merged"; $cell = $worksheet->get_cell( 7, 1 ); $expected_1 = 1; $got_1 = $cell->is_merged(); $got_2 = $cell->{Merged}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 29, 30. Cell is merged. # $caption = "Test cell is merged"; $cell = $worksheet->get_cell( 7, 1 ); $expected_1 = 1; $got_1 = $cell->is_merged(); $got_2 = $cell->{Merged}; $caption = " \tCell regression: " . $caption; is( $got_1, $expected_1, $caption ); is( $got_2, $expected_1, $caption ); ############################################################################### # # Test 31, 32. Cell contains Rich Text. # $caption = "Test cell containing rich text"; $cell = $worksheet->get_cell( 8, 0 ); $expected_1 = [ 10, 14, 19 ]; $got_1 = $cell->get_rich_text(); $got_2 = $cell->{Rich}; $caption = " \tCell regression: " . $caption; # Just test the indices and not the font objects. $got_1 = [ map { $_->[0] } @$got_1 ]; $got_2 = [ map { $_->[0] } @$got_2 ]; is_deeply( $got_1, $expected_1, $caption ); is_deeply( $got_2, $expected_1, $caption ); __END__