00001 <?php
00002
00003 class ArticleTest extends PHPUnit_Framework_TestCase {
00004 var $saveGlobals = array();
00005
00006 function setUp() {
00007 $globalSet = array(
00008 'wgLegacyEncoding' => false,
00009 'wgCompressRevisions' => false,
00010 'wgInputEncoding' => 'utf-8',
00011 'wgOutputEncoding' => 'utf-8' );
00012 foreach( $globalSet as $var => $data ) {
00013 $this->saveGlobals[$var] = $GLOBALS[$var];
00014 $GLOBALS[$var] = $data;
00015 }
00016 }
00017
00018 function tearDown() {
00019 foreach( $this->saveGlobals as $var => $data ) {
00020 $GLOBALS[$var] = $data;
00021 }
00022 }
00023
00024 function testGetRevisionText() {
00025 $row = new stdClass;
00026 $row->old_flags = '';
00027 $row->old_text = 'This is a bunch of revision text.';
00028 $this->assertEquals(
00029 'This is a bunch of revision text.',
00030 Revision::getRevisionText( $row ) );
00031 }
00032
00033 function testGetRevisionTextGzip() {
00034 $row = new stdClass;
00035 $row->old_flags = 'gzip';
00036 $row->old_text = gzdeflate( 'This is a bunch of revision text.' );
00037 $this->assertEquals(
00038 'This is a bunch of revision text.',
00039 Revision::getRevisionText( $row ) );
00040 }
00041
00042 function testGetRevisionTextUtf8Native() {
00043 $row = new stdClass;
00044 $row->old_flags = 'utf-8';
00045 $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
00046 $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
00047 $this->assertEquals(
00048 "Wiki est l'\xc3\xa9cole superieur !",
00049 Revision::getRevisionText( $row ) );
00050 }
00051
00052 function testGetRevisionTextUtf8Legacy() {
00053 $row = new stdClass;
00054 $row->old_flags = '';
00055 $row->old_text = "Wiki est l'\xe9cole superieur !";
00056 $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
00057 $this->assertEquals(
00058 "Wiki est l'\xc3\xa9cole superieur !",
00059 Revision::getRevisionText( $row ) );
00060 }
00061
00062 function testGetRevisionTextUtf8NativeGzip() {
00063 $row = new stdClass;
00064 $row->old_flags = 'gzip,utf-8';
00065 $row->old_text = gzdeflate( "Wiki est l'\xc3\xa9cole superieur !" );
00066 $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
00067 $this->assertEquals(
00068 "Wiki est l'\xc3\xa9cole superieur !",
00069 Revision::getRevisionText( $row ) );
00070 }
00071
00072 function testGetRevisionTextUtf8LegacyGzip() {
00073 $row = new stdClass;
00074 $row->old_flags = 'gzip';
00075 $row->old_text = gzdeflate( "Wiki est l'\xe9cole superieur !" );
00076 $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
00077 $this->assertEquals(
00078 "Wiki est l'\xc3\xa9cole superieur !",
00079 Revision::getRevisionText( $row ) );
00080 }
00081
00082 function testCompressRevisionTextUtf8() {
00083 $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
00084 $row->old_flags = Revision::compressRevisionText( $row->old_text );
00085 $this->assertTrue( false !== strpos( $row->old_flags, 'utf-8' ),
00086 "Flags should contain 'utf-8'" );
00087 $this->assertFalse( false !== strpos( $row->old_flags, 'gzip' ),
00088 "Flags should not contain 'gzip'" );
00089 $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
00090 $row->old_text, "Direct check" );
00091 $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
00092 Revision::getRevisionText( $row ), "getRevisionText" );
00093 }
00094
00095 function testCompressRevisionTextUtf8Gzip() {
00096 $GLOBALS['wgCompressRevisions'] = true;
00097 $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
00098 $row->old_flags = Revision::compressRevisionText( $row->old_text );
00099 $this->assertTrue( false !== strpos( $row->old_flags, 'utf-8' ),
00100 "Flags should contain 'utf-8'" );
00101 $this->assertTrue( false !== strpos( $row->old_flags, 'gzip' ),
00102 "Flags should contain 'gzip'" );
00103 $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
00104 gzinflate( $row->old_text ), "Direct check" );
00105 $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
00106 Revision::getRevisionText( $row ), "getRevisionText" );
00107 }
00108 }
00109
00110