/[XML-Feed]/t/01-parse.t
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /t/01-parse.t

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide annotations)
Sun Mar 16 19:47:49 2008 UTC (16 years, 1 month ago) by dpavlin
File MIME type: application/x-troff
File size: 2491 byte(s)
import XML::Feed 0.12 from CPAN

1 dpavlin 1 # $Id: 01-parse.t 1921 2006-02-28 02:50:52Z btrott $
2    
3     use strict;
4     use Test::More tests => 72;
5     use XML::Feed;
6     use URI;
7    
8     my %Feeds = (
9     't/samples/atom.xml' => 'Atom',
10     't/samples/rss10.xml' => 'RSS 1.0',
11     't/samples/rss20.xml' => 'RSS 2.0',
12     );
13    
14     ## First, test all of the various ways of calling parse.
15     my $feed;
16     my $file = 't/samples/atom.xml';
17     $feed = XML::Feed->parse($file);
18     isa_ok($feed, 'XML::Feed::Atom');
19     is($feed->title, 'First Weblog');
20     open my $fh, $file or die "Can't open $file: $!";
21     $feed = XML::Feed->parse($fh);
22     isa_ok($feed, 'XML::Feed::Atom');
23     is($feed->title, 'First Weblog');
24     seek $fh, 0, 0;
25     my $xml = do { local $/; <$fh> };
26     $feed = XML::Feed->parse(\$xml);
27     isa_ok($feed, 'XML::Feed::Atom');
28     is($feed->title, 'First Weblog');
29     $feed = XML::Feed->parse(URI->new("file:$file"));
30     isa_ok($feed, 'XML::Feed::Atom');
31     is($feed->title, 'First Weblog');
32    
33     ## Then try calling all of the unified API methods.
34     for my $file (sort keys %Feeds) {
35     my $feed = XML::Feed->parse($file) or die XML::Feed->errstr;
36     my($subclass) = $Feeds{$file} =~ /^(\w+)/;
37     isa_ok($feed, 'XML::Feed::' . $subclass);
38     is($feed->format, $Feeds{$file});
39     is($feed->language, 'en-us');
40     is($feed->title, 'First Weblog');
41     is($feed->link, 'http://localhost/weblog/');
42     is($feed->tagline, 'This is a test weblog.');
43     is($feed->description, 'This is a test weblog.');
44     my $dt = $feed->modified;
45     isa_ok($dt, 'DateTime');
46     $dt->set_time_zone('UTC');
47     is($dt->iso8601, '2004-05-30T07:39:57');
48     is($feed->author, 'Melody');
49    
50     my @entries = $feed->entries;
51     is(scalar @entries, 2);
52     my $entry = $entries[0];
53     is($entry->title, 'Entry Two');
54     is($entry->link, 'http://localhost/weblog/2004/05/entry_two.html');
55     $dt = $entry->issued;
56     isa_ok($dt, 'DateTime');
57     $dt->set_time_zone('UTC');
58     is($dt->iso8601, '2004-05-30T07:39:25');
59     like($entry->content->body, qr/<p>Hello!<\/p>/);
60     is($entry->summary->body, 'Hello!...');
61     is($entry->category, 'Travel');
62     is($entry->author, 'Melody');
63     ok($entry->id);
64     }
65    
66     $feed = XML::Feed->parse('t/samples/rss20-no-summary.xml')
67     or die XML::Feed->errstr;
68     my $entry = ($feed->entries)[0];
69     ok(!$entry->summary->body);
70     like($entry->content->body, qr/<p>This is a test.<\/p>/);
71    
72     $feed = XML::Feed->parse('t/samples/rss10-invalid-date.xml')
73     or die XML::Feed->errstr;
74     $entry = ($feed->entries)[0];
75     ok(!$entry->issued); ## Should return undef, but not die.
76     ok(!$entry->modified); ## Same.

  ViewVC Help
Powered by ViewVC 1.1.26