i always forget this..
[lhc/web/wiklou.git] / tests / ArticleTest.php
1 <?php
2
3 require_once( 'PHPUnit.php' );
4 require_once( '../includes/Defines.php' );
5 require_once( '../includes/Article.php' );
6
7 class ArticleTest extends PHPUnit_TestCase {
8 var $saveGlobals = array();
9
10 function ArticleTest( $name ) {
11 $this->PHPUnit_TestCase( $name );
12 }
13
14 function setUp() {
15 $globalSet = array(
16 'wgLegacyEncoding' => false,
17 'wgUseLatin1' => false,
18 'wgCompressRevisions' => false,
19 'wgInputEncoding' => 'utf-8',
20 'wgOutputEncoding' => 'utf-8' );
21 foreach( $globalSet as $var => $data ) {
22 $this->saveGlobals[$var] = $GLOBALS[$var];
23 $GLOBALS[$var] = $data;
24 }
25 }
26
27 function tearDown() {
28 foreach( $this->saveGlobals as $var => $data ) {
29 $GLOBALS[$var] = $data;
30 }
31 }
32
33 function testGetRevisionText() {
34 $row = new stdClass;
35 $row->old_flags = '';
36 $row->old_text = 'This is a bunch of revision text.';
37 $this->assertEquals(
38 'This is a bunch of revision text.',
39 Revision::getRevisionText( $row ) );
40 }
41
42 function testGetRevisionTextGzip() {
43 $row = new stdClass;
44 $row->old_flags = 'gzip';
45 $row->old_text = gzdeflate( 'This is a bunch of revision text.' );
46 $this->assertEquals(
47 'This is a bunch of revision text.',
48 Revision::getRevisionText( $row ) );
49 }
50
51 function testGetRevisionTextUtf8Native() {
52 $row = new stdClass;
53 $row->old_flags = 'utf-8';
54 $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
55 $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
56 $this->assertEquals(
57 "Wiki est l'\xc3\xa9cole superieur !",
58 Revision::getRevisionText( $row ) );
59 }
60
61 function testGetRevisionTextUtf8Legacy() {
62 $row = new stdClass;
63 $row->old_flags = '';
64 $row->old_text = "Wiki est l'\xe9cole superieur !";
65 $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
66 $this->assertEquals(
67 "Wiki est l'\xc3\xa9cole superieur !",
68 Revision::getRevisionText( $row ) );
69 }
70
71 function testGetRevisionTextUtf8NativeGzip() {
72 $row = new stdClass;
73 $row->old_flags = 'gzip,utf-8';
74 $row->old_text = gzdeflate( "Wiki est l'\xc3\xa9cole superieur !" );
75 $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
76 $this->assertEquals(
77 "Wiki est l'\xc3\xa9cole superieur !",
78 Revision::getRevisionText( $row ) );
79 }
80
81 function testGetRevisionTextUtf8LegacyGzip() {
82 $row = new stdClass;
83 $row->old_flags = 'gzip';
84 $row->old_text = gzdeflate( "Wiki est l'\xe9cole superieur !" );
85 $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
86 $this->assertEquals(
87 "Wiki est l'\xc3\xa9cole superieur !",
88 Revision::getRevisionText( $row ) );
89 }
90
91 function testCompressRevisionTextUtf8() {
92 $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
93 $row->old_flags = Revision::compressRevisionText( $row->old_text );
94 $this->assertTrue( false !== strpos( $row->old_flags, 'utf-8' ),
95 "Flags should contain 'utf-8'" );
96 $this->assertFalse( false !== strpos( $row->old_flags, 'gzip' ),
97 "Flags should not contain 'gzip'" );
98 $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
99 $row->old_text, "Direct check" );
100 $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
101 Revision::getRevisionText( $row ), "getRevisionText" );
102 }
103
104 function testCompressRevisionTextLatin1() {
105 $GLOBALS['wgUseLatin1'] = true;
106 $row->old_text = "Wiki est l'\xe9cole superieur !";
107 $row->old_flags = Revision::compressRevisionText( $row->old_text );
108 $this->assertFalse( false !== strpos( $row->old_flags, 'utf-8' ),
109 "Flags should not contain 'utf-8'" );
110 $this->assertFalse( false !== strpos( $row->old_flags, 'gzip' ),
111 "Flags should not contain 'gzip'" );
112 $this->assertEquals( "Wiki est l'\xe9cole superieur !",
113 $row->old_text, "Direct check" );
114 $this->assertEquals( "Wiki est l'\xe9cole superieur !",
115 Revision::getRevisionText( $row ), "getRevisionText" );
116 }
117
118 function testCompressRevisionTextUtf8Gzip() {
119 $GLOBALS['wgCompressRevisions'] = true;
120 $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
121 $row->old_flags = Revision::compressRevisionText( $row->old_text );
122 $this->assertTrue( false !== strpos( $row->old_flags, 'utf-8' ),
123 "Flags should contain 'utf-8'" );
124 $this->assertTrue( false !== strpos( $row->old_flags, 'gzip' ),
125 "Flags should contain 'gzip'" );
126 $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
127 gzinflate( $row->old_text ), "Direct check" );
128 $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
129 Revision::getRevisionText( $row ), "getRevisionText" );
130 }
131
132 function testCompressRevisionTextLatin1Gzip() {
133 $GLOBALS['wgCompressRevisions'] = true;
134 $GLOBALS['wgUseLatin1'] = true;
135 $row = new stdClass;
136 $row->old_text = "Wiki est l'\xe9cole superieur !";
137 $row->old_flags = Revision::compressRevisionText( $row->old_text );
138 $this->assertFalse( false !== strpos( $row->old_flags, 'utf-8' ),
139 "Flags should not contain 'utf-8'" );
140 $this->assertTrue( false !== strpos( $row->old_flags, 'gzip' ),
141 "Flags should contain 'gzip'" );
142 $this->assertEquals( "Wiki est l'\xe9cole superieur !",
143 gzinflate( $row->old_text ), "Direct check" );
144 $this->assertEquals( "Wiki est l'\xe9cole superieur !",
145 Revision::getRevisionText( $row ), "getRevisionText" );
146 }
147
148 }
149
150 ?>