# ---------------------------------------------------------------- use strict; use Test::More; # ---------------------------------------------------------------- { local $@; eval { require JSON::Syck; }; plan skip_all => 'JSON::Syck is not loaded.' if $@; plan tests => 17; use_ok('XML::FeedPP'); ok( defined $JSON::Syck::VERSION, "JSON::Syck $JSON::Syck::VERSION" ); &test_main(); } # ---------------------------------------------------------------- sub test_main { my $ftitle = "Title of the site"; my $fdesc = "Description of the site"; my $fdate = "Mon, 02 Jan 2006 03:04:05 +0600"; my $fright = "Owner of the site"; my $flink = "http://www.kawa.net/"; my $flang = "ja"; my $link1 = "http://www.perl.org/"; my $link2 = "http://use.perl.org/"; my $title1 = "The Perl Directory - perl.org"; my $title2 = "use Perl: All the Perl that's Practical to Extract and Report"; my $feeds = [ [ 'rss' => XML::FeedPP::RSS->new() ], [ 'rdf:RDF' => XML::FeedPP::RDF->new() ], [ 'feed' => XML::FeedPP::Atom->new() ], ]; my $opts = { use_json_syck => 1, use_json_pp => 0 }; foreach my $pair ( @$feeds ) { my( $root, $feed ) = @$pair; $feed->title( $ftitle ); $feed->description( $fdesc ); $feed->pubDate( $fdate ); $feed->copyright( $fright ); $feed->link( $flink ); $feed->language( $flang ); my $item1 = $feed->add_item( $link1 ); $item1->title( $title1 ); my $item2 = $feed->add_item( $link2 ); $item2->title( $title2 ); my $json = $feed->call( DumpJSON => %$opts ); like( $json, qr/\Q$flink\E/, 'channel link' ); like( $json, qr/\Q$link1\E/, 'item link 1' ); like( $json, qr/\Q$link2\E/, 'item link 2' ); my $data = JSON::Syck::Load($json); ok( ref $data->{$root}, "$root root element" ); ok( $data->{$root}->{'-xmlns'} || $data->{$root}->{'-version'}, "$root xmlns or version" ); } } # ---------------------------------------------------------------- ;1; # ----------------------------------------------------------------