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

use strict;
use lib './lib';
use Test::More tests => 692;

use FindBin;
use lib $FindBin::RealBin;
use testload;

my $file = "$Dat_Dir/basic.html";

use HTML::TableExtract;

# By count
my $label = 'by subtable scoop';
my $te = HTML::TableExtract->new(
  depth     => 0,
  count     => 2,
  subtables => 1,
);
ok($te->parse_file($file), "$label (parse_file)");
my @tablestates = $te->tables;
cmp_ok(@tablestates, '==', 3, "$label (extract count)");
good_data($_, "$label (data)") foreach @tablestates;

# Check subtable slice immunity
$file = "$Dat_Dir/subtable.html";
$label = 'by subtable, slice immune';
$te = HTML::TableExtract->new(
  headers   => [('SubtableHead Eight', 'SubtableHead Two')],
  subtables => 1,
);
ok($te->parse_file($file), "$label (parse_file)");
@tablestates = $te->tables;
cmp_ok(@tablestates, '==', 4, "$label (extract count)");
my $mule = splice(@tablestates, 0, 1);
my @mrows = $mule->rows;
cmp_ok(@mrows, '==', 1, "$label (mule row check)");
cmp_ok(@{$mrows[0]}, '==', 4, "$label (mule col check)");
good_slice_data($tablestates[-1], "$label (data)", 0, 3);
good_data($_, "$label (data)") foreach @tablestates[0,1];

# Check subtable slice precedence
$label = 'by subtable, slice precedence';
$te = HTML::TableExtract->new(
  headers   => [('Head.*Eight', 'Head.*Two')],
  subtables => 1,
);
ok($te->parse_file($file), "$label (parse_file)");
@tablestates = $te->tables;
cmp_ok(@tablestates, '==', 4, "$label (extract count)");
$mule = splice(@tablestates, 2, 1);
@mrows = $mule->rows;
cmp_ok(@mrows, '==', 1, "$label (mule row check)");
cmp_ok(@{$mrows[0]}, '==', 4, "$label (mule col check)");
good_slice_data($tablestates[-1], "$label (data)", 0, 3);
good_data($_, "$label (data)", 2, 8) foreach @tablestates[0,1];