# ----------------------------------------------------------------
use strict;
use Test::More tests => 21;
BEGIN { use_ok('XML::FeedPP') };
# ----------------------------------------------------------------
my $ftitle = "Title of the site";
my $fdesc = "Description of the site";
my $fdateA = "Mon, 02 Jan 2006 03:04:05 +0600";
my $fdateB = "2006-01-02T03:04:05+06:00";
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 $link3 = "http://cpan.perl.org/";
my $title1 = "The Perl Directory - perl.org";
my $title2 = "use Perl: All the Perl that's Practical to Extract and Report";
my $title3 = "The Comprehensive Perl Archive Network";
# ----------------------------------------------------------------
my $idesc = "Description of the first item";
my $icate = "Category of the first item";
my $idateA = "Sun, 11 Dec 2005 10:09:08 -0700";
my $idateB = "2005-12-11T10:09:08-07:00";
my $iauthor = "Author";
my $iguid = "GUID";
# ----------------------------------------------------------------
my $feed1 = XML::FeedPP::RSS->new();
$feed1->title( $ftitle );
$feed1->description( $fdesc );
$feed1->pubDate( $fdateA );
$feed1->copyright( $fright );
$feed1->link( $flink );
$feed1->language( $flang );
# ----------------------------------------------------------------
my $item1 = $feed1->add_item( $link1 );
$item1->title( $title1 );
$item1->pubDate( $idateA );
$item1->description( $idesc );
$item1->category( $icate );
$item1->author( $iauthor, isPermaLink => "false" );
$item1->guid( $iguid );
# ----------------------------------------------------------------
ok( 1 == scalar $feed1->get_item(), "RSS 1st" );
my $source1 = $feed1->to_string();
# ----------------------------------------------------------------
# Round1: RSS -> RDF -> Atom -> RSS (w/1item)
# ----------------------------------------------------------------
my $feed2 = XML::FeedPP::RDF->new();
$feed2->merge( $source1 );
ok( 1 == $feed2->get_item(), "RDF 1st" );
my $source2 = $feed2->to_string();
my $feed3 = XML::FeedPP::Atom->new();
$feed3->merge( $source2 );
ok( 1 == $feed3->get_item(), "Atom 1st" );
my $source3 = $feed3->to_string();
my $feed4 = XML::FeedPP::RSS->new();
$feed4->merge( $source3 );
ok( 1 == $feed4->get_item(), "RSS 2nd A" );
# ----------------------------------------------------------------
my $item2 = $feed4->add_item( $link2 );
$item2->title( $title2 );
$item2->pubDate( $idateA );
my $item3 = $feed4->add_item( $link3 );
$item3->title( $title3 );
$item3->pubDate( $idateA );
ok( 3 == $feed4->get_item(), "RSS 2nd B" );
# ----------------------------------------------------------------
# Round2: RSS -> Atom -> RDF -> RSS (w/3items)
# ----------------------------------------------------------------
my $source4 = $feed4->to_string();
my $feed5 = XML::FeedPP::Atom->new();
$feed5->merge( $source4 );
ok( 3 == $feed5->get_item(), "Atom 2nd" );
my $source5 = $feed5->to_string();
my $feed6 = XML::FeedPP::RDF->new();
$feed6->merge( $source5 );
ok( 3 == $feed6->get_item(), "RDF 2nd" );
my $source6 = $feed6->to_string();
my $feed7 = XML::FeedPP::RSS->new();
$feed7->merge( $source6 );
ok( 3 == $feed7->get_item(), "RSS 3rd" );
my $source7 = $feed7->to_string();
# ----------------------------------------------------------------
is( $source4, $source7, "turn round" );
is( $feed7->title(), $ftitle, "RSS->title()" );
is( $feed7->description(), $fdesc, "RSS->description()" );
is( $feed7->pubDate(), $fdateB, "RSS->pubDate()" );
is( $feed7->copyright(), $fright, "RSS->copyright()" );
is( $feed7->link(), $flink, "RSS->link()" );
is( $feed7->language(), $flang, "RSS->language()" );
# ----------------------------------------------------------------
my $item7 = $feed7->get_item( 0 );
is( $item7->link(), $link1, "Item->title()" );
is( $item7->title(), $title1, "Item->title()" );
is( $item7->pubDate(), $idateB, "Item->pubDate()" );
is( $item7->description(), $idesc, "Item->description()" );
is( $item7->author(), $iauthor, "Item->author()" );
# ----------------------------------------------------------------
# use Data::Dumper;
# my $text = Dumper( $feed1 );
# ----------------------------------------------------------------
;1;
# ----------------------------------------------------------------