#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 8;
use XML::RSS;
sub starts_with
{
local $Test::Builder::Level = $Test::Builder::Level + 1;
my ($rss, $prefix, $msg) = @_;
my $rss_output = $rss->as_string();
my $ok = is (
substr($rss_output, 0, length($prefix)-1),
substr($prefix, 0, length($prefix)-1),
$msg
);
}
sub create_rss_1
{
my $args = shift;
my @style =
exists($args->{stylesheet}) ?
(stylesheet => $args->{stylesheet}) :
()
;
my $rss = XML::RSS->new(
version => $args->{version},
@style
);
my $image_link = exists($args->{image_link}) ? $args->{image_link} :
"http://freshmeat.net/";
my $extra_image_params = $args->{image_params} || [];
$rss->channel(
title => "freshmeat.net",
link => "http://freshmeat.net",
description => "the one-stop-shop for all your Linux software needs",
);
$rss->image(
title => "freshmeat.net",
url => "0",
link => $image_link,
@{$extra_image_params},
);
$rss->add_item(
title => "GTKeyboard 0.85",
link => "http://freshmeat.net/news/1999/06/21/930003829.html"
);
return $rss;
}
{
# TEST
starts_with(
create_rss_1({'version' => "0.9"}),
<<'EOF',
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
EOF
"header of RSS 0.9 without the stylesheet"
);
}
{
# TEST
starts_with(
create_rss_1({'version' => "0.91"}),
<<'EOF',
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
"http://www.rssboard.org/rss-0.91.dtd">
<rss version="0.91">
EOF
"header of RSS 0.9.1 without the stylesheet"
);
}
{
# TEST
starts_with(
create_rss_1({'version' => "1.0"}),
<<'EOF',
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
EOF
"header of RSS 1.0 without the stylesheet"
);
}
{
# TEST
starts_with(
create_rss_1({'version' => "2.0"}),
<<'EOF',
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
EOF
"header of RSS 2.0 without the stylesheet"
);
}
{
# TEST
starts_with(
create_rss_1({'version' => "0.9", stylesheet => "http://myhost.tld/foo.xsl"}),
<<'EOF',
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://myhost.tld/foo.xsl"?>
<rdf:RDF
EOF
"header of RSS 0.9 with the stylesheet"
);
}
{
# TEST
starts_with(
create_rss_1({'version' => "0.91", stylesheet => "http://myhost.tld/foo.xsl"}),
<<'EOF',
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://myhost.tld/foo.xsl"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
"http://www.rssboard.org/rss-0.91.dtd">
<rss version="0.91">
EOF
"header of RSS 0.9.1 with the stylesheet"
);
}
{
# TEST
starts_with(
create_rss_1({'version' => "1.0", stylesheet => "http://myhost.tld/foo.xsl"}),
<<'EOF',
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://myhost.tld/foo.xsl"?>
<rdf:RDF
EOF
"header of RSS 1.0 without the stylesheet"
);
}
{
# TEST
starts_with(
create_rss_1({'version' => "2.0", stylesheet => "http://myhost.tld/foo.xsl"}),
<<'EOF',
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://myhost.tld/foo.xsl"?>
<rss version="2.0"
EOF
"header of RSS 2.0 without the stylesheet"
);
}