# ---------------------------------------------------------------- use strict; use Test::More tests => 41; BEGIN { use_ok('XML::TreePP') }; # ---------------------------------------------------------------- my $xml1 = 'aaabbb'; my $xml2 = 'cccddd'; my $xml3 = ''; my $xml4 = ''; my $xml5 = 'jjj'; my $xml6 = 'lllnnn'; my $tpp = XML::TreePP->new(); foreach my $cdata ( 1, 0 ) { $tpp->set( cdata_scalar_ref => $cdata ); $tpp->set( multi_text_nodes => 0 ); my $tree1 = $tpp->parse( $xml1 ); my $tree2 = $tpp->parse( $xml2 ); my $tree3 = $tpp->parse( $xml3 ); my $tree4 = $tpp->parse( $xml4 ); my $tree5 = $tpp->parse( $xml5 ); my $tree6 = $tpp->parse( $xml6 ); ok( ! ref $tree1->{root}{text}{'#text'}, '1 parse' ); ok( ! ref $tree2->{root}{text}{'#text'}, '2 parse' ); if ( $cdata ) { is( ref $tree3->{root}{text}{'#text'}, 'SCALAR', '3 parse cdata' ); is( ref $tree4->{root}{text}{'#text'}, 'SCALAR', '4 parse cdata' ); is( ref $tree5->{root}{text}, 'SCALAR', '5 parse cdata' ); is( ref $tree6->{root}{text}, 'SCALAR', '6 parse cdata' ); } else { ok( ! ref $tree3->{root}{text}{'#text'}, '3 parse' ); ok( ! ref $tree4->{root}{text}{'#text'}, '4 parse' ); ok( ! ref $tree5->{root}{text}, '5 parse' ); ok( ! ref $tree6->{root}{text}, '6 parse' ); } is( $tree1->{root}{text}{'#text'}, 'aaabbb', '1 aaa-bbb' ); is( $tree2->{root}{text}{'#text'}, 'cccddd', '2 ccc-ddd' ); if ( $cdata ) { is( ref $tree3->{root}{text}{'#text'}, 'SCALAR', '3 eee-fff ref' ); is( ref $tree4->{root}{text}{'#text'}, 'SCALAR', '4 ggg-hhh ref' ); is( ref $tree5->{root}{text}, 'SCALAR', '5 iii-jjj-kkk ref' ); is( ref $tree6->{root}{text}, 'SCALAR', '6 lll-mmm-nnn ref' ); is( ${$tree3->{root}{text}{'#text'}}, 'eeefff', '3 eee-fff cdata' ); is( ${$tree4->{root}{text}{'#text'}}, 'ggghhh', '4 ggg-hhh cdata' ); is( ${$tree5->{root}{text}}, 'iiijjjkkk', '5 iii-jjj-kkk cdata' ); is( ${$tree6->{root}{text}}, 'lllmmmnnn', '6 lll-mmm-nnn cdata' ); } else { is( $tree3->{root}{text}{'#text'}, 'eeefff', '3 eee-fff' ); is( $tree4->{root}{text}{'#text'}, 'ggghhh', '4 ggg-hhh' ); is( $tree5->{root}{text}, 'iiijjjkkk', '5 iii-jjj-kkk' ); is( $tree6->{root}{text}, 'lllmmmnnn', '6 lll-mmm-nnn' ); } my $write1 = $tpp->write( $tree1 ); my $write2 = $tpp->write( $tree2 ); my $write3 = $tpp->write( $tree3 ); my $write4 = $tpp->write( $tree4 ); my $write5 = $tpp->write( $tree5 ); my $write6 = $tpp->write( $tree6 ); like( $write1, qr/>aaabbbcccddd/s, '3 write cdata' ); like( $write4, qr//s, '4 write cdata' ); like( $write5, qr//s, '5 write cdata' ); like( $write6, qr//s, '6 write cdata' ); } else { like( $write3, qr/>eeefffggghhhiiijjjkkklllmmmnnn