#!/usr/bin/perl -w use strict; use Test; BEGIN { plan tests => 20 } use Mail::Freshmeat; my @newsletter = (); unless (open(LETTER1, 't/sample.newsletter.1')) { die "Failed to open sample.newsletter.1: $!\n"; } print "Testing new() constructor ...\n"; $newsletter[0] = new Mail::Freshmeat(\*LETTER1); ok($newsletter[0] ? 1 : 0); close(LETTER1); unless (open(LETTER2, 't/sample.newsletter.2')) { die "Failed to open sample.newsletter.2: $!\n"; } print "Testing new() constructor ...\n"; $newsletter[1] = new Mail::Freshmeat(\*LETTER2); ok($newsletter[1] ? 1 : 0); close(LETTER2); print "Attempting to parse() ...\n"; ok($newsletter[0]->parse, 'ok'); ok($newsletter[1]->parse, 'ok'); my $summary = <summary, $summary); print "Checking date() ...\n"; ok($newsletter[0]->date, 'Sunday, August 01st'); print "Checking total() ...\n"; ok($newsletter[0]->total, 122); my ($ad_header, $advertisement) = (<ad_header); ok(! $newsletter[0]->advertisement); ok($newsletter[1]->ad_header, $ad_header); ok($newsletter[1]->advertisement, $advertisement); my $slist1 = <list; ok($slist2, $slist1); print "Checking entries() ...\n"; ok($newsletter[0]->entries->[1]{name}, 'KDevelop'); ok($newsletter[0]->entries->[16]{version}, '1.22p'); ok($newsletter[0]->entries->[17]{version}, '0.36b1.2'); ok($newsletter[0]->entries->[18]{version}, '19990801'); ok($newsletter[0]->entries->[74]{version}, '4.6 build 1009'); ok($newsletter[0]->entries->[74]{category}, 'X11/Graphics'); print "Checking short_entry() ...\n"; my $slist3 = join '', map { 'o ' . $newsletter[0]->short_entry($_) . "\n" } @{$newsletter[0]->entries}; ok($slist3, $slist1); print "Checking long_entry() ...\n"; my $llist1 = $newsletter[0]->details; my $llist2 = join $newsletter[0]->divider, map { $newsletter[0]->long_entry($_) } @{$newsletter[0]->entries}; # There must be a quicker way to do this $llist1 =~ s/[ \t]+/ /g; $llist2 =~ s/[ \t]+/ /g; $llist1 =~ s/\r$//gm; $llist2 =~ s/\r$//gm; $llist1 =~ s/^[\s*\n]+/\n/gms; $llist2 =~ s/^[\s*\n]+/\n/gms; ok($llist1, $llist2);