sub getFuncCovSummary($) {
my ($reportFile) = @_;
my $func = 0;
my $compl = 0;
my $group = 0;
my $assert = 0;
my $ftest = 0;
my $targetSheet = "";
my $col = 0;
my $row = 0;
my $hvp_col = 0;
my $grp_col = 0;
my $ass_col = 0;
my $tst_col = 0;
my $plan_row = 0;
my $isData = 0;
my $isComment = 0;
my $mergeAcross = 0;
my $mergeDown = 0;
my @str = ();
my $parser = new XML::Parser ( Handlers => {
Start => \&hdl_start,
End => \&hdl_end,
Char => \&hdl_char,
Default => \&hdl_def,
Final => \&hdl_final,
});
$parser->parsefile( $reportFile );
# The Handlers
sub hdl_start{
my ($p, $elt, %atts) = @_;
return unless (($elt eq 'Worksheet') ||
($elt eq 'Row') ||
($elt eq 'Cell') ||
($elt eq 'Comment') ||
($elt eq 'Data') ||
($elt eq 'ss:Data'));
if ($elt eq 'Worksheet') {
if ($atts{'ss:Name'} =~ /^(\d)_/) {$targetSheet = "Sheet$1";}
print "PK_start : $targetSheet : $row, $col, $group, $assert, $ftest
";
$row = 0;
$col = 0;
}
return unless $targetSheet eq "Sheet0";
if ($elt eq 'Row') { $row++; $col = 0;}
if ($elt eq 'Cell') {
$col = $col + 1 + $mergeAcross;
if ($atts{'ss:Index'} > 0) { $col = $atts{'ss:Index'};}
if ($atts{'ss:MergeAcross'} > 0) {$mergeAcross = $atts{'ss:MergeAcross'};}
else {$mergeAcross = 0;}
if ($atts{'ss:MergeDown'} > 0) {$mergeDown = $atts{'ss:MergeDown'};}
else {$mergeDown = 0;}
}
if ($elt eq 'Comment') { $isComment = 1;}
if (($elt eq 'Data') || ($elt eq 'ss:Data')) { @str = (); $isData = 1;}
}
sub hdl_end{
my ($p, $elt) = @_;
return unless $targetSheet eq "Sheet0";
return unless (($elt eq 'Comment') ||
($elt eq 'Data') ||
($elt eq 'ss:Data'));
if ($elt eq 'Comment') { $isComment = 0;}
if (($elt eq 'Data') || ($elt eq 'ss:Data')) {
if (!$isComment) {
my $p = 0;
my $str = join("", @str);
if ($str =~ /^hvp\s+plan/) { $hvp_col = $col; }
if ($str =~ /^value\w+\.Group/) { $grp_col = $col; }
if ($str =~ /^value\w+\.Assert/) { $ass_col = $col; }
if ($str =~ /^value\w+\.test/) { $tst_col = $col; }
if (($col == $hvp_col) && ($str =~ /^plan/)) { $plan_row = $row; }
if (($row == $plan_row) && ($col == $grp_col)) { $group = sprintf("%0.f",$str*100); $p = 1;}
if (($row == $plan_row) && ($col == $ass_col)) { $assert = sprintf("%0.f",$str*100); $p = 1;}
if (($row == $plan_row) && ($col == $tst_col)) { $ftest = $str; $p = 1;}
if ($p) {print "PK_end : $targetSheet : $row : $col : $group : $assert : $ftest
";}
}
$isData = 0;
}
}
sub hdl_char {
my ($p, $str) = @_;
return unless $targetSheet eq "Sheet0";
return unless ($isData && !$isComment);
push @str, $str;
}
sub hdl_def { }
sub hdl_final {print "PK_final : $func, $compl, $group, $assert, $ftest
"; }
print "PK_return : $func, $compl, $group, $assert, $ftest
";
return ($func, $compl, $group, $assert, $ftest);
}# getFuncCovSummary