File: 30-revisions.t

package info (click to toggle)
libparse-mediawikidump-perl 1.0.6-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 228 kB
  • sloc: perl: 1,156; xml: 205; sql: 16; makefile: 2
file content (144 lines) | stat: -rw-r--r-- 3,278 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#!perl -w

use Test::Simple tests => 114;
use strict;
use Parse::MediaWikiDump;
use Data::Dumper;

my $file = 't/revisions_test.xml';
my $fh;
my $revisions;
my $mode;

$mode = 'file';
test_all($file);

open($fh, $file) or die "could not open $file: $!";

$mode = 'handle';
test_all($fh);

sub test_all {
	$revisions = Parse::MediaWikiDump->revisions(shift);

	test_siteinfo();
	
	test_one();
	test_two();
	test_three();
	test_four();
	test_five();
	test_six();
	
	ok(! defined($revisions->next));
}

sub test_siteinfo {
	
	ok($revisions->sitename eq 'Sitename Test Value');
	ok($revisions->base eq 'Base Test Value');
	ok($revisions->generator eq 'Generator Test Value');
	ok($revisions->case eq 'Case Test Value');
	ok($revisions->namespaces->[0]->[0] == -2);
	ok($revisions->namespaces_names->[0] eq 'Media');
	ok($revisions->current_byte != 0);
	ok($revisions->version eq '0.3');
	
	if ($mode eq 'file') {
		ok($revisions->size == 3570);
	} elsif ($mode eq 'handle') {
		ok(! defined($revisions->size));
	} else {
		die "invalid test mode";
	}
}

#the first two tests check everything to make sure information
#is not leaking across pages due to accumulator errors. 
sub test_one {
	my $page = $revisions->next;
	my $text = $page->text;
	
	ok(defined($page));
			
	ok($page->title eq 'Talk:Title Test Value');
	ok($page->id == 1);
	ok($page->revision_id == 47084);
	ok($page->username eq 'Username Test Value 1');
	ok($page->userid == 1292);
	ok($page->timestamp eq '2005-07-09T18:41:10Z');
	ok($page->userid == 1292);
	ok($page->minor);
	ok($$text eq "Text Test Value 1\n");
	ok($page->namespace eq 'Talk');
	ok(! defined($page->redirect));
	ok(! defined($page->categories));
}

sub test_two {
	my $page = $revisions->next;
	my $text = $page->text;

	ok($page->title eq 'Title Test Value #2');
	ok($page->id == 2);
	ok($page->revision_id eq '47085'); 
	ok($page->username eq 'Username Test Value 2');
	ok($page->timestamp eq '2006-07-09T18:41:10Z');
	ok($page->userid == 12);
	ok($page->minor);
	ok($$text eq "#redirect : [[fooooo]]");
	ok($page->namespace eq '');
	ok($page->redirect eq 'fooooo');
	ok(! defined($page->categories));
}

sub test_three {
	my $page = $revisions->next;
	my $text = $page->text;

	ok(defined($page));
	ok($page->redirect eq 'fooooo');
	ok($page->title eq 'Title Test Value #2');
	ok($page->id == 2);
	ok($page->timestamp eq '2005-07-09T18:41:10Z');
	ok($page->username eq 'Username Test Value');
	ok($page->userid == 1292);
	ok(! $page->minor);
}

sub test_four {
	my $page = $revisions->next;
	my $text = $page->text;

	ok(defined($page));

	ok($page->id == 4);
	ok($page->timestamp eq '2005-07-09T18:41:10Z');
	ok($page->username eq 'Username Test Value');
	ok($page->userid == 1292);

	#test for bug 36255
	ok($page->namespace eq '');
	ok($page->title eq 'NotANameSpace:Bar');
}

#test for Bug 50092
sub test_five {
	my $page = $revisions->next;
	ok($page->title eq 'Bug 50092 Test');
	ok(defined(${$page->text}));		
}

#test for bug 53361
sub test_six {
	my $page = $revisions->next;
	ok($page->title eq 'Test for bug 53361');
	ok($page->username eq 'Ben-Zin');
	ok(! defined($page->userip));
	
	$page = $revisions->next;
	ok($page->title eq 'Test for bug 53361');
	ok($page->userip eq '62.104.212.74');
	ok(! defined($page->username));
}