- # Because HTML::TreeBuilder has changed a few times, this can't be exactly equal
- my $gen_html = $c->as_HTML;
- $gen_html =~ s/\=\"(\d+)\"/=$1/g;
- my $day1 = $days[$cal->[3] - 1];
- cmp_ok(dq_nums($c->as_HTML), 'eq', $cal->[2],
- sprintf("(%d/%-02d %s 1st day) using %s",
- $cal->[0], $cal->[1], $day1, $method));
- if ($DEBUG && $c->as_HTML ne $cal->[2]) {
- debug_dump('Broken', $c->as_HTML, 'Test Data', $cal->[2]);
+ @days = $c->dayheaders unless @days;
+ my $day1 = $days[$wb - 1];
+ my $method = $c->_caltool->_name;
+ $method = "auto-select ($method)" unless $datetool;
+ my $msg = sprintf(
+ "(%d/%02d %s 1st day) using %s",
+ $y, $m, $day1, $method
+ );
+ cmp_ok(clean($c->as_HTML), 'eq', $tc, $msg);
+ }
+}
+
+sub check_head_with_datetool {
+ my $datetool = shift;
+ my @days;
+ foreach (@Head) {
+ my($d, $y, $m, $wb, $other, $tc) = @$_;
+ my($hm, $hy, $hd, $hw) = @$other;
+ my $c = HTML::CalendarMonth->new(
+ year => $y,
+ month => $m,
+ week_begin => $wb,
+ head_m => $hm,
+ head_y => $hy,
+ head_dow => $hd,
+ head_week => $hw,
+ datetool => $datetool,
+ );
+ my $method = $c->_caltool->_name;
+ $method = "auto-select ($method)" unless $datetool;
+ my $msg = sprintf(
+ "(%d/%02d hm:%d hy:%d hd:%d hw:%d) using %s",
+ $y, $m, $hm, $hy, $hd, $hw, $method
+ );
+ cmp_ok(clean($c->as_HTML), 'eq', $tc, $msg);
+ }
+}
+
+sub check_odd_with_datetool {
+ my $datetool = shift;
+ my @days;
+ foreach (@Odd) {
+ my($d, $y, $m, $wb, $other, $tc) = @$_;
+ SKIP: {
+ my $c;
+ eval {
+ $c = HTML::CalendarMonth->new(
+ year => $y,
+ month => $m,
+ week_begin => $wb,
+ datetool => $datetool,
+ );
+ };
+ if ($@ || !$c) {
+ croak $@ unless $@ =~ /(no|in)\s*valid date tool/i;
+ skip("$datetool odd $y/$m", 1);
+ }
+ @days = $c->dayheaders unless @days;
+ my $day1 = $days[$wb - 1];
+ my $method = $c->_caltool->_name;
+ $method = "auto-select ($method)" unless $datetool;
+ my $msg = sprintf(
+ "(%d/%02d %s 1st day) using %s",
+ $y, $m, $day1, $method
+ );
+ cmp_ok(clean($c->as_HTML), 'eq', $tc, $msg);