# ----------------------------------------------------------------
use strict;
use Test::More;
# ----------------------------------------------------------------
{
plan tests => 73;
use_ok('XML::TreePP');
&test_indent( undef );
&test_indent( 1 );
&test_indent( 4 );
}
# ----------------------------------------------------------------
sub test_indent {
my $indent = shift;
my $order = [qw( one two three four five six seven eight nine )];
my $tpp = XML::TreePP->new( first_out => $order, indent => $indent );
my $nine = '9';
my $tree = {
root => {
one => '1',
two => {
'#text' => '2',
three => undef,
},
four => [{
five => '5',
six => {
'#text' => '6',
},
}, {
seven => {
'#text' => '7',
-eight => '8',
},
}],
nine => \$nine,
},
};
my $xml = $tpp->write( $tree );
my $space = $indent ? '\040' x $indent : '';
$indent ||= 0;
like( $xml, qr{ 1 }x, "[$indent] text node" );
like( $xml, qr{ 2 }x, "[$indent] text node after empty node" );
like( $xml, qr{ 6 }x, "[$indent] explicit text node" );
like( $xml, qr{ >7 }x, "[$indent] text node after attribute" );
like( $xml, qr{ }x, "[$indent] cdata node" );
like( $xml, qr{ ^ }mx, "[$indent] no-indent root" );
like( $xml, qr{ ^$space }mx, "[$indent] indent one" );
like( $xml, qr{ ^$space }mx, "[$indent] indent two" );
like( $xml, qr{ ^$space }mx, "[$indent] indent four" );
like( $xml, qr{ ^$space }mx, "[$indent] indent four end" );
like( $xml, qr{ ^$space$space }mx, "[$indent] indent five" );
like( $xml, qr{ ^$space$space }mx, "[$indent] indent six" );
like( $xml, qr{ ^$space$space }mx, "[$indent] indent nine" );
like( $xml, qr{ ^ }mx, "[$indent] no-indent root end" );
like( $xml, qr{ \n }x, "[$indent] line root" );
like( $xml, qr{ \n }x, "[$indent] line one" );
like( $xml, qr{ \n }x, "[$indent] line two" );
like( $xml, qr{ \n }x, "[$indent] line five" );
like( $xml, qr{ \n }x, "[$indent] line six" );
like( $xml, qr{ \n }x, "[$indent] line four" );
like( $xml, qr{ \n }x, "[$indent] line nine" );
like( $xml, qr{ \n }x, "[$indent] line root" );
}
# ----------------------------------------------------------------
=example
1
2
5
6
7
=cut
# ----------------------------------------------------------------
;1;
# ----------------------------------------------------------------