File: 38_cdata_cdsect.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 (62 lines) | stat: -rwxr-xr-x 2,589 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
# ----------------------------------------------------------------
    use strict;
    use Test::More tests => 161;
    BEGIN { use_ok('XML::TreePP') };
# ----------------------------------------------------------------
{
    my $test = {
        '<cdata><![CDATA[]]></cdata>'       =>  '',
        '<cdata><![CDATA[]]]></cdata>'      =>  ']',
        '<cdata><![CDATA[>]]></cdata>'      =>  '>',

        '<cdata><![CDATA[]]]]></cdata>'                 =>  ']]',
        '<cdata><![CDATA[]]]><![CDATA[]]]></cdata>'     =>  ']]',

        '<cdata><![CDATA[]>]]></cdata>'                 =>  ']>',
        '<cdata><![CDATA[]]]><![CDATA[>]]></cdata>'     =>  ']>',

        '<cdata>]<![CDATA[]]]>&gt;</cdata>'             =>  ']]>',
        '<cdata>]<![CDATA[]>]]></cdata>'                =>  ']]>',
        '<cdata><![CDATA[]]]]>&gt;</cdata>'             =>  ']]>',
        '<cdata><![CDATA[]]]]><![CDATA[>]]></cdata>'    =>  ']]>',
        '<cdata><![CDATA[]]]><![CDATA[]>]]></cdata>'    =>  ']]>',
        '<cdata>]<![CDATA[]]]><![CDATA[>]]></cdata>'    =>  ']]>',
        '<cdata><![CDATA[]]]><![CDATA[]]]>&gt;</cdata>' =>  ']]>',
        '<cdata><![CDATA[]]]>]<![CDATA[>]]></cdata>'    =>  ']]>',
        '<cdata><![CDATA[]]]><![CDATA[]]]><![CDATA[>]]></cdata>'    =>  ']]>',

        '<cdata><![CDATA[]]]><![CDATA[]>]]]]><![CDATA[>]]></cdata>' =>  ']]>]]>',
        '<cdata><![CDATA[]]]><![CDATA[]>]]]><![CDATA[]>]]></cdata>' =>  ']]>]]>',

        '<cdata><![CDATA[]]]><![CDATA[]>]]><![CDATA[]]]]><![CDATA[>]]></cdata>' =>  ']]>]]>',
        '<cdata><![CDATA[]]]]><![CDATA[>]]><![CDATA[]]]><![CDATA[]>]]></cdata>' =>  ']]>]]>',
    };
    &cdata_cdsect( $test );
    &cdata_cdsect( $test, { cdata_scalar_ref=>1 } );
}
# ----------------------------------------------------------------
sub cdata_cdsect {
    my $list = shift;
    my $opt  = shift;
    my $tpp  = XML::TreePP->new( %$opt );

    foreach my $src ( keys %$list ) {
        my $val = $list->{$src};
        my $tree = $tpp->parse( $src );
        ok( exists $tree->{cdata}, 'exists' );

        my $cdata = $tree->{cdata};
        $cdata = $$cdata if ( ref $cdata eq 'SCALAR' );
        ok( ! ref $cdata, 'invalid ref' );
        is( $cdata, $val, $val );

        my $xml = $tpp->write( $tree );
        my $again = $tpp->parse( $xml );
        my $cdat2 = $again->{cdata};
        $cdat2 = $$cdat2 if ( ref $cdat2 eq 'SCALAR' );
        is( $cdat2, $cdata, 'round trip' );
    }
}
# ----------------------------------------------------------------
;1;
# ----------------------------------------------------------------