gozer 2004/08/10 15:48:27
Modified: t/response/TestApache conftree.pm Log: Improve Apache::Directive tests by including a full tree traversal and calling a few new methods on node components : directive, args, filename & line_num Revision Changes Path 1.12 +49 -2 modperl-2.0/t/response/TestApache/conftree.pm Index: conftree.pm =================================================================== RCS file: /home/cvs/modperl-2.0/t/response/TestApache/conftree.pm,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- conftree.pm 8 Jul 2004 04:52:06 -0000 1.11 +++ conftree.pm 10 Aug 2004 22:48:27 -0000 1.12 @@ -15,7 +15,10 @@ my $r = shift; my $cfg = Apache::Test::config(); - plan $r, tests => 8; + + my $node_count = node_count(); + + plan $r, tests => 8 + (5*$node_count); ok $cfg; @@ -60,7 +63,51 @@ ok !$vhost_failed; } - + + traverse_tree ( \&test_node ); + Apache::OK; +} + +sub test_node { + my ($data, $node) = @_; + ok $node->directive; + #Args can be null for argless directives + ok $node->args || 1; + #As string can be null for containers + ok $node->as_string || 1; + ok $node->filename; + ok $node->line_num; +} + +sub traverse_tree { + my ($sub, $data) = @_; + my $node = Apache::Directive->conftree; + while ($node) { + $sub->($data, $node); + if (my $kid = $node->first_child) { + $node = $kid; + } + elsif (my $next = $node->next) { + $node = $next; + } + else { + if (my $parent = $node->parent) { + $node = $parent->next; + } + else { + $node = undef; + } + } + } + return; +} + +sub node_count { + my $node_count = 0; + + traverse_tree( sub { ${$_[0]}++ }, \$node_count ); + + return $node_count; } 1;