The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# ----------------------------------------------------------------
    use strict;
    use Test::More tests => 58;
    BEGIN { use_ok('XML::FeedPP') };
# ----------------------------------------------------------------
	my $Ftitle = 'Kawa.net_XP';
	my $Fdescription = 'this_is_a_test.';
	my $FpubDate = '2007-08-19T05:33:00+09:00';
	my $Fcopyright = 'Yusuke_Kawasaki';
	my $Flink = 'http://www.kawa.net/';
	my $Flanguage = 'ja';
	my $Fimage = 'http://www.kawa.net/xp/images/xp-title-128x32.gif';
	my $Ititle = 'XML::FeedPP';
	my $Idescription = 'testing_this_module!';
	my $IpubDate = '2007-08-19T05:36+09:00';
	my $Icategory1 = 'Apple';
	my $Icategory2 = 'Orange';
	my $Icategory3 = 'Melon';
	my $Iauthor = 'Kawasaki_Yusuke';
	my $Iguid = 'urn:uuid:4744168A-4DCB-11DC-B682-AF437E717A71';
	my $Ilink = 'http://www.kawa.net/works/perl/feedpp/feedpp-e.html';
# ----------------------------------------------------------------
{
	my $atom = XML::FeedPP::Atom::Atom03->new();
	ok( ref $atom, 'XML::FeedPP::Atom::Atom03' );
	&roundtrip( $atom );

	my $xml = $atom->to_string();
    like( $xml, qr{ <title[^>]*>        $Ftitle     </title>    }sx, 'xml feed title' );
    like( $xml, qr{ <tagline[^>]*>  $Fdescription   </tagline>  }sx, 'xml feed tagline' );
    like( $xml, qr{ <modified>        \Q$FpubDate\E </modified> }sx, 'xml feed modified' );
    like( $xml, qr{ <copyright>         $Fcopyright </copyright>}sx, 'xml feed copyright' );
    like( $xml, qr{ <link[^>]*href="    $Flink      "           }sx, 'xml feed link alternative' );
    like( $xml, qr{ <feed[^>]*xml:lang="$Flanguage  "           }sx, 'xml feed lang' );
    like( $xml, qr{ <link[^>]*href="    $Fimage     "           }sx, 'xml feed link icon' );
    
    my $entry = ( $xml =~ m{ <entry>(.*)</entry> }xs )[0];
    like( $entry, qr{ <link[^>]*href="      $Ilink      "           }sx, 'xml item link alternative' );
    like( $entry, qr{ <title[^>]*>          $Ititle     </title>    }sx, 'xml item title' );
    like( $entry, qr{ <content[^>]*>        $Idescription   </content>  }sx, 'xml item content' );
    like( $entry, qr{ <modified>          \Q$IpubDate\E </modified> }sx, 'xml item modified' );
    like( $entry, qr{ <author>\s*<name>     $Iauthor    </name>     }sx, 'xml item author name' );
    like( $entry, qr{ <id>                  $Iguid      </id>       }sx, 'xml item id' );
}
# ----------------------------------------------------------------
{
	my $atom = XML::FeedPP::Atom::Atom10->new();
	ok( ref $atom, 'XML::FeedPP::Atom::Atom10' );
	&roundtrip( $atom );

	my $xml = $atom->to_string();

    like( $xml, qr{ <title[^>]*>        $Ftitle     </title>    }sx, 'xml feed title' );
    like( $xml, qr{ <content[^>]*>    $Fdescription </content>  }sx, 'xml feed content' );
    like( $xml, qr{ <updated>         \Q$FpubDate\E </updated>  }sx, 'xml feed updated' );
    like( $xml, qr{ <rights>            $Fcopyright </rights>   }sx, 'xml feed rights' );
    like( $xml, qr{ <link[^>]*href="    $Flink      "           }sx, 'xml feed link alternative' );
    like( $xml, qr{ <feed[^>]*xml:lang="$Flanguage  "           }sx, 'xml feed lang' );
    like( $xml, qr{ <link[^>]*href="    $Fimage     "           }sx, 'xml feed link icon' );
    
    my $entry = ( $xml =~ m{ <entry>(.*)</entry> }xs )[0];
    like( $entry, qr{ <link[^>]*href="      $Ilink      "           }sx, 'xml item link alternative' );
    like( $entry, qr{ <title[^>]*>          $Ititle     </title>    }sx, 'xml item title' );
    like( $entry, qr{ <content[^>]*>        $Idescription   </content>  }sx, 'xml item content' );
    like( $entry, qr{ <updated>           \Q$IpubDate\E </updated>  }sx, 'xml item updated' );
    like( $entry, qr{ <author>\s*<name>     $Iauthor    </name>     }sx, 'xml item author name' );
    like( $entry, qr{ <id>                  $Iguid      </id>       }sx, 'xml item id' );

	my $cat = $atom->get_item(0)->category;
	is( $cat->[0], $Icategory1, 'category 1' );
	is( $cat->[1], $Icategory2, 'category 2' );
	is( $cat->[2], $Icategory3, 'category 3' );
}
# ----------------------------------------------------------------
sub roundtrip {
	my $atom = shift;
	$atom->title( $Ftitle );
	$atom->description( $Fdescription );
	$atom->pubDate( $FpubDate );
	$atom->copyright( $Fcopyright );
	$atom->link( $Flink );
	$atom->language( $Flanguage );
	$atom->image( $Fimage );
	is( $atom->title, 		$Ftitle, 		'roundtrip feed title' );
	is( $atom->description, $Fdescription, 	'roundtrip feed description' );
	is( $atom->pubDate, 	$FpubDate, 		'roundtrip feed pubDate' );
	is( $atom->copyright, 	$Fcopyright, 	'roundtrip feed copyright' );
	is( $atom->link, 		$Flink, 		'roundtrip feed link' );
	is( $atom->language, 	$Flanguage, 	'roundtrip feed language' );
	is( $atom->image, 		$Fimage, 		'roundtrip feed image' );

	my $item = $atom->add_item( $Ilink );
	$item->title( $Ititle );
	$item->description( $Idescription );
	$item->pubDate( $IpubDate );
	$item->category( $Icategory1, $Icategory2, $Icategory3 );
	$item->author( $Iauthor );
	$item->guid( $Iguid );

	is( $item->link, 		$Ilink, 		'roundtrip item link' );
	is( $item->title, 		$Ititle, 		'roundtrip item title' );
	is( $item->description, $Idescription, 	'roundtrip item description' );
	is( $item->pubDate, 	$IpubDate, 		'roundtrip item pubDate' );
#	is( $item->category, 	$Icategory, 	'roundtrip item category' );
	is( $item->author, 		$Iauthor, 		'roundtrip item author' );
	is( $item->guid, 		$Iguid, 		'roundtrip item guid' );
}
# ----------------------------------------------------------------
;1;
# ----------------------------------------------------------------