/XML-TreePP/t/38_cdata_cdsect.t

http://xml-treepp.googlecode.com/ · Raku · 62 lines · 49 code · 8 blank · 5 comment · 4 complexity · 3dd7d9501a7db885657e2e2c51ff2330 MD5 · raw file

  1. # ----------------------------------------------------------------
  2. use strict;
  3. use Test::More tests => 161;
  4. BEGIN { use_ok('XML::TreePP') };
  5. # ----------------------------------------------------------------
  6. {
  7. my $test = {
  8. '<cdata><![CDATA[]]></cdata>' => '',
  9. '<cdata><![CDATA[]]]></cdata>' => ']',
  10. '<cdata><![CDATA[>]]></cdata>' => '>',
  11. '<cdata><![CDATA[]]]]></cdata>' => ']]',
  12. '<cdata><![CDATA[]]]><![CDATA[]]]></cdata>' => ']]',
  13. '<cdata><![CDATA[]>]]></cdata>' => ']>',
  14. '<cdata><![CDATA[]]]><![CDATA[>]]></cdata>' => ']>',
  15. '<cdata>]<![CDATA[]]]>&gt;</cdata>' => ']]>',
  16. '<cdata>]<![CDATA[]>]]></cdata>' => ']]>',
  17. '<cdata><![CDATA[]]]]>&gt;</cdata>' => ']]>',
  18. '<cdata><![CDATA[]]]]><![CDATA[>]]></cdata>' => ']]>',
  19. '<cdata><![CDATA[]]]><![CDATA[]>]]></cdata>' => ']]>',
  20. '<cdata>]<![CDATA[]]]><![CDATA[>]]></cdata>' => ']]>',
  21. '<cdata><![CDATA[]]]><![CDATA[]]]>&gt;</cdata>' => ']]>',
  22. '<cdata><![CDATA[]]]>]<![CDATA[>]]></cdata>' => ']]>',
  23. '<cdata><![CDATA[]]]><![CDATA[]]]><![CDATA[>]]></cdata>' => ']]>',
  24. '<cdata><![CDATA[]]]><![CDATA[]>]]]]><![CDATA[>]]></cdata>' => ']]>]]>',
  25. '<cdata><![CDATA[]]]><![CDATA[]>]]]><![CDATA[]>]]></cdata>' => ']]>]]>',
  26. '<cdata><![CDATA[]]]><![CDATA[]>]]><![CDATA[]]]]><![CDATA[>]]></cdata>' => ']]>]]>',
  27. '<cdata><![CDATA[]]]]><![CDATA[>]]><![CDATA[]]]><![CDATA[]>]]></cdata>' => ']]>]]>',
  28. };
  29. &cdata_cdsect( $test );
  30. &cdata_cdsect( $test, { cdata_scalar_ref=>1 } );
  31. }
  32. # ----------------------------------------------------------------
  33. sub cdata_cdsect {
  34. my $list = shift;
  35. my $opt = shift;
  36. my $tpp = XML::TreePP->new( %$opt );
  37. foreach my $src ( keys %$list ) {
  38. my $val = $list->{$src};
  39. my $tree = $tpp->parse( $src );
  40. ok( exists $tree->{cdata}, 'exists' );
  41. my $cdata = $tree->{cdata};
  42. $cdata = $$cdata if ( ref $cdata eq 'SCALAR' );
  43. ok( ! ref $cdata, 'invalid ref' );
  44. is( $cdata, $val, $val );
  45. my $xml = $tpp->write( $tree );
  46. my $again = $tpp->parse( $xml );
  47. my $cdat2 = $again->{cdata};
  48. $cdat2 = $$cdat2 if ( ref $cdat2 eq 'SCALAR' );
  49. is( $cdat2, $cdata, 'round trip' );
  50. }
  51. }
  52. # ----------------------------------------------------------------
  53. ;1;
  54. # ----------------------------------------------------------------