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