File: 33_indent.t

package info (click to toggle)
libxml-treepp-perl 0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 680 kB
  • sloc: perl: 810; xml: 58; sh: 41; makefile: 2
file content (89 lines) | stat: -rwxr-xr-x 3,234 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# ----------------------------------------------------------------
    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{ <one>1</one> }x, "[$indent] text node" );
    like( $xml, qr{ <two><three  }x, "[$indent] child node" );
    like( $xml, qr{ />2</two>    }x, "[$indent] text node after empty node" );
    like( $xml, qr{ <six>6</six> }x, "[$indent] explicit text node" );
    like( $xml, qr{ >7</seven>   }x, "[$indent] text node after attribute" );
    like( $xml, qr{ <nine><!\[CDATA\[9\]\]></nine> }x, "[$indent] cdata node" );

    like( $xml, qr{ ^<root>        }mx, "[$indent] no-indent root" );
    like( $xml, qr{ ^$space<one>   }mx, "[$indent] indent one" );
    like( $xml, qr{ ^$space<two>   }mx, "[$indent] indent two" );
    like( $xml, qr{ ^$space<four>  }mx, "[$indent] indent four" );
    like( $xml, qr{ ^$space</four> }mx, "[$indent] indent four end" );
    like( $xml, qr{ ^$space$space<five> }mx, "[$indent] indent five" );
    like( $xml, qr{ ^$space$space<six>  }mx, "[$indent] indent six" );
    like( $xml, qr{ ^$space$space<seven }mx, "[$indent] indent seven" );
    like( $xml, qr{ ^$space<nine>  }mx, "[$indent] indent nine" );
    like( $xml, qr{ ^</root>       }mx, "[$indent] no-indent root end" );

    like( $xml, qr{ <root>\n  }x, "[$indent] line root" );
    like( $xml, qr{ </one>\n  }x, "[$indent] line one" );
    like( $xml, qr{ </two>\n  }x, "[$indent] line two" );
    like( $xml, qr{ </five>\n }x, "[$indent] line five" );
    like( $xml, qr{ </six>\n  }x, "[$indent] line six" );
    like( $xml, qr{ </four>\n }x, "[$indent] line four" );
    like( $xml, qr{ </nine>\n }x, "[$indent] line nine" );
    like( $xml, qr{ </root>\n }x, "[$indent] line root" );
}
# ----------------------------------------------------------------
=example
<root>
    <one>1</one>
    <two><three />2</two>
    <four>
        <five>5</five>
        <six>6</six>
    </four>
    <four>
        <seven eight="8">7</seven>
    </four>
    <nine><![CDATA[9]]></nine>
</root>
=cut
# ----------------------------------------------------------------
;1;
# ----------------------------------------------------------------