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