From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!perl -T
use strict;
use warnings FATAL => 'all';
eval "use HTML::TableExtract";
plan skip_all => "HTML::TableExtract required" if $@;
plan tests => 10;
use_ok 'Spreadsheet::HTML';
my %file = ( file => 't/data/simple.html' );
my $table = new_ok 'Spreadsheet::HTML', [ %file ];
is $table->generate,
'<table><tr><th>header1</th><th>header2</th><th>header3</th></tr><tr><td>foo</td><td>bar</td><td>baz</td></tr><tr><td>one</td><td>two</td><td>three</td></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>',
"loaded simple HTML data via method"
;
is Spreadsheet::HTML::generate( %file ),
'<table><tr><th>header1</th><th>header2</th><th>header3</th></tr><tr><td>foo</td><td>bar</td><td>baz</td></tr><tr><td>one</td><td>two</td><td>three</td></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>',
"loaded simple HTML data via procedure"
;
is $table->generate( data => 1 ),
'<table><tr><th>header1</th><th>header2</th><th>header3</th></tr><tr><td>foo</td><td>bar</td><td>baz</td></tr><tr><td>one</td><td>two</td><td>three</td></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>',
"data param does not clobber loaded simple HTML data via method"
;
is Spreadsheet::HTML::generate( %file, data => 1 ),
'<table><tr><th>header1</th><th>header2</th><th>header3</th></tr><tr><td>foo</td><td>bar</td><td>baz</td></tr><tr><td>one</td><td>two</td><td>three</td></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>',
"data param does not clobber loaded simple HTML data via procedure"
;
$table = Spreadsheet::HTML->new( %file );
is $table->landscape,
'<table><tr><th>header1</th><td>foo</td><td>one</td><td>1</td></tr><tr><th>header2</th><td>bar</td><td>two</td><td>2</td></tr><tr><th>header3</th><td>baz</td><td>three</td><td>3</td></tr></table>',
"transposed simple HTML data via method from new object"
;
is Spreadsheet::HTML::landscape( %file ),
'<table><tr><th>header1</th><td>foo</td><td>one</td><td>1</td></tr><tr><th>header2</th><td>bar</td><td>two</td><td>2</td></tr><tr><th>header3</th><td>baz</td><td>three</td><td>3</td></tr></table>',
"transposed simple HTML data via procedure"
;
is $table->generate( file => 't/data/multiple.html', worksheet => 2 ),
'<table><tr><th>header1</th><th>header2</th><th>header3</th></tr><tr><td>foo</td><td>bar</td><td>baz</td></tr><tr><td>one</td><td>two</td><td>three</td></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>',
"loaded second table data via method"
;
is Spreadsheet::HTML::generate( file => 't/data/multiple.html', worksheet => 2 ),
'<table><tr><th>header1</th><th>header2</th><th>header3</th></tr><tr><td>foo</td><td>bar</td><td>baz</td></tr><tr><td>one</td><td>two</td><td>three</td></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>',
"loaded second table data via procedure"
;