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 => 14;
    BEGIN { use_ok('XML::FeedPP') };
# ----------------------------------------------------------------
    &test_main();
# ----------------------------------------------------------------
sub test_main {
    my $feed = XML::FeedPP::RSS->new();

    my $link0 = 'http://www.example.com/';
    my $link1 = 'http://www.example.com/sample1.html';
    my $link2 = 'http://www.example.com/sample2.html';
    my $link3 = 'http://www.example.com/sample3.html';
    my $title0 = 'sample channel';
    my $title1 = 'sample item 1';
    my $title2 = 'sample item 2';
    my $title3 = 'sample item 3';

    $feed->title( $title0 );
    is( $feed->title, $title0, 'feed title' );

    $feed->link( $link0 );
    is( $feed->link, $link0, 'feed link' );

    # default when missing
    my $item1 = $feed->add_item( $link1 );
    is( $item1->link, $link1, 'item 1 link' );
    $item1->guid( $link1 );
    is( $item1->guid, $link1, 'guid without arguments' );
    is( $item1->{guid}->{-isPermaLink}, 'true', 'isPermaLink without arguments' );

    # old behavior
    my $item2 = $feed->add_item( $link2 );
    is( $item2->link, $link2, 'item 2 link' );
    $item2->guid( $link2, 'false' );
    is( $item2->guid, $link2, 'guid with an argument' );
    is( $item2->{guid}->{-isPermaLink}, 'false', 'isPermaLink with an argument' );

    # documented behavior
    my $item3 = $feed->add_item( $link3 );
    is( $item3->link, $link3, 'item 3 link' );
    $item3->guid( $link3, isPermaLink => 'false' );
    is( $item3->guid, $link3, 'guid with an argument' );
    is( $item3->{guid}->{-isPermaLink}, 'false', 'isPermaLink with arguments' );

    my $out = $feed->to_string();
    my $cnt = {};
    while ( $out =~ m#<guid isPermaLink="(\w+)">#g ) {
        $cnt->{$1} ||= 0;
        $cnt->{$1} ++;
    }
    is( $cnt->{true},  1, 'isPermaLink true 1' );
    is( $cnt->{false}, 2, 'isPermaLink false 2' );
}
# ----------------------------------------------------------------