/XML-FeedPP/t/45_cdata_multi.t

http://xml-treepp.googlecode.com/ · Raku · 53 lines · 42 code · 3 blank · 8 comment · 0 complexity · a8fd2f351e50743bb58fd28bbe04d6c4 MD5 · raw file

  1. # ----------------------------------------------------------------
  2. use strict;
  3. use Test::More tests => 23;
  4. BEGIN { use_ok('XML::FeedPP') };
  5. # ----------------------------------------------------------------
  6. my $url = "http://www.kawa.net/";
  7. my $cate1 = "hoge";
  8. my $cate2 = "pomu";
  9. my $cate3 = "foobar";
  10. my $catem = [ \$cate1, \$cate2, \$cate3 ];
  11. my $caten = scalar @$catem;
  12. # ----------------------------------------------------------------
  13. my $feed0 = XML::FeedPP::RSS->new();
  14. $feed0->link( $url );
  15. my $item0 = $feed0->add_item( $url );
  16. $item0->category( $catem );
  17. ok( ref $item0->category(), "init multi ref" );
  18. my $source = $feed0->to_string();
  19. like( $source, qr/><!\[CDATA\[\Q$cate1\E\]\]></s, "init multi 1/3" );
  20. like( $source, qr/><!\[CDATA\[\Q$cate2\E\]\]></s, "init multi 2/3" );
  21. like( $source, qr/><!\[CDATA\[\Q$cate3\E\]\]></s, "init multi 3/3" );
  22. # ----------------------------------------------------------------
  23. my $feeds = [
  24. XML::FeedPP::RDF->new(),
  25. XML::FeedPP::RSS->new(),
  26. # XML::FeedPP::Atom::Atom10->new(), # Atom 1.0's <category> doesn't use CDATA
  27. ];
  28. # ----------------------------------------------------------------
  29. foreach my $feed1 ( @$feeds ) {
  30. my $type = ref $feed1;
  31. $feed1->merge( $source );
  32. my $item1 = $feed1->get_item(0);
  33. my $icate = $item1->category();
  34. ok( ref $icate, "$type load ref" );
  35. is( scalar @$icate, $caten, "$type load count" );
  36. $item1->category( \$cate1 );
  37. is( $item1->category(), $cate1, "$type one" );
  38. like( $feed1->to_string(), qr/><!\[CDATA\[\Q$cate1\E\]\]></s, "$type one source" );
  39. $item1->category( $catem );
  40. my $jcate = $item1->category();
  41. ok( ref $jcate, "$type multi ref" );
  42. is( scalar @$jcate, $caten, "$type multi count" );
  43. $source = $feed1->to_string();
  44. like( $source, qr/><!\[CDATA\[\Q$cate1\E\]\]></s, "$type multi 1/3" );
  45. like( $source, qr/><!\[CDATA\[\Q$cate2\E\]\]></s, "$type multi 2/3" );
  46. like( $source, qr/><!\[CDATA\[\Q$cate3\E\]\]></s, "$type multi 3/3" );
  47. }
  48. # ----------------------------------------------------------------
  49. ;1;
  50. # ----------------------------------------------------------------