Add initial tests for Article::getRevisionText and Article::compressRevision
authorBrion Vibber <brion@users.mediawiki.org>
Sat, 23 Oct 2004 09:19:00 +0000 (09:19 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Sat, 23 Oct 2004 09:19:00 +0000 (09:19 +0000)
tests/ArticleTest.php [new file with mode: 0644]
tests/RunTests.php

diff --git a/tests/ArticleTest.php b/tests/ArticleTest.php
new file mode 100644 (file)
index 0000000..15b8eba
--- /dev/null
@@ -0,0 +1,150 @@
+<?php
+
+require_once( 'PHPUnit.php' );
+require_once( '../includes/Defines.php' );
+require_once( '../includes/Article.php' );
+
+class ArticleTest extends PHPUnit_TestCase {
+       var $saveGlobals = array();
+       
+       function ArticleTest( $name ) {
+               $this->PHPUnit_TestCase( $name );
+       }
+       
+       function setUp() {
+               $globalSet = array(
+                       'wgLegacyEncoding' => false,
+                       'wgUseLatin1' => false,
+                       'wgCompressRevisions' => false,
+                       'wgInputEncoding' => 'utf-8',
+                       'wgOutputEncoding' => 'utf-8' );
+               foreach( $globalSet as $var => $data ) {
+                       $this->saveGlobals[$var] = $GLOBALS[$var];
+                       $GLOBALS[$var] = $data;
+               }
+       }
+       
+       function tearDown() {
+               foreach( $this->saveGlobals as $var => $data ) {
+                       $GLOBALS[$var] = $data;
+               }
+       }
+       
+       function testGetRevisionText() {
+               $row = new stdClass;
+               $row->old_flags = '';
+               $row->old_text = 'This is a bunch of revision text.';
+               $this->assertEquals(
+                       'This is a bunch of revision text.',
+                       Article::getRevisionText( $row ) );
+       }
+       
+       function testGetRevisionTextGzip() {
+               $row = new stdClass;
+               $row->old_flags = 'gzip';
+               $row->old_text = gzdeflate( 'This is a bunch of revision text.' );
+               $this->assertEquals(
+                       'This is a bunch of revision text.',
+                       Article::getRevisionText( $row ) );
+       }
+       
+       function testGetRevisionTextUtf8Native() {
+               $row = new stdClass;
+               $row->old_flags = 'utf-8';
+               $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
+               $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
+               $this->assertEquals(
+                       "Wiki est l'\xc3\xa9cole superieur !",
+                       Article::getRevisionText( $row ) );
+       }
+       
+       function testGetRevisionTextUtf8Legacy() {
+               $row = new stdClass;
+               $row->old_flags = '';
+               $row->old_text = "Wiki est l'\xe9cole superieur !";
+               $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
+               $this->assertEquals(
+                       "Wiki est l'\xc3\xa9cole superieur !",
+                       Article::getRevisionText( $row ) );
+       }
+       
+       function testGetRevisionTextUtf8NativeGzip() {
+               $row = new stdClass;
+               $row->old_flags = 'gzip,utf-8';
+               $row->old_text = gzdeflate( "Wiki est l'\xc3\xa9cole superieur !" );
+               $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
+               $this->assertEquals(
+                       "Wiki est l'\xc3\xa9cole superieur !",
+                       Article::getRevisionText( $row ) );
+       }
+       
+       function testGetRevisionTextUtf8LegacyGzip() {
+               $row = new stdClass;
+               $row->old_flags = 'gzip';
+               $row->old_text = gzdeflate( "Wiki est l'\xe9cole superieur !" );
+               $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
+               $this->assertEquals(
+                       "Wiki est l'\xc3\xa9cole superieur !",
+                       Article::getRevisionText( $row ) );
+       }
+       
+       function testCompressRevisionTextUtf8() {
+               $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
+               $row->old_flags = Article::compressRevisionText( $row->old_text );
+               $this->assertTrue( false !== strpos( $row->old_flags, 'utf-8' ),
+                       "Flags should contain 'utf-8'" );
+               $this->assertFalse( false !== strpos( $row->old_flags, 'gzip' ),
+                       "Flags should not contain 'gzip'" );
+               $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
+                       $row->old_text, "Direct check" );
+               $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
+                       Article::getRevisionText( $row ), "getRevisionText" );
+       }
+
+       function testCompressRevisionTextLatin1() {
+               $GLOBALS['wgUseLatin1'] = true;
+               $row->old_text = "Wiki est l'\xe9cole superieur !";
+               $row->old_flags = Article::compressRevisionText( $row->old_text );
+               $this->assertFalse( false !== strpos( $row->old_flags, 'utf-8' ),
+                       "Flags should not contain 'utf-8'" );
+               $this->assertFalse( false !== strpos( $row->old_flags, 'gzip' ),
+                       "Flags should not contain 'gzip'" );
+               $this->assertEquals( "Wiki est l'\xe9cole superieur !",
+                       $row->old_text, "Direct check" );
+               $this->assertEquals( "Wiki est l'\xe9cole superieur !",
+                       Article::getRevisionText( $row ), "getRevisionText" );
+       }
+       
+       function testCompressRevisionTextUtf8Gzip() {
+               $GLOBALS['wgCompressRevisions'] = true;
+               $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
+               $row->old_flags = Article::compressRevisionText( $row->old_text );
+               $this->assertTrue( false !== strpos( $row->old_flags, 'utf-8' ),
+                       "Flags should contain 'utf-8'" );
+               $this->assertTrue( false !== strpos( $row->old_flags, 'gzip' ),
+                       "Flags should contain 'gzip'" );
+               $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
+                       gzinflate( $row->old_text ), "Direct check" );
+               $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
+                       Article::getRevisionText( $row ), "getRevisionText" );
+       }
+
+       function testCompressRevisionTextLatin1Gzip() {
+               $GLOBALS['wgCompressRevisions'] = true;
+               $GLOBALS['wgUseLatin1'] = true;
+               $row = new stdClass;
+               $row->old_text = "Wiki est l'\xe9cole superieur !";
+               $row->old_flags = Article::compressRevisionText( $row->old_text );
+               $this->assertFalse( false !== strpos( $row->old_flags, 'utf-8' ),
+                       "Flags should not contain 'utf-8'" );
+               $this->assertTrue( false !== strpos( $row->old_flags, 'gzip' ),
+                       "Flags should contain 'gzip'" );
+               $this->assertEquals( "Wiki est l'\xe9cole superieur !",
+                       gzinflate( $row->old_text ), "Direct check" );
+               $this->assertEquals( "Wiki est l'\xe9cole superieur !",
+                       Article::getRevisionText( $row ), "getRevisionText" );
+       }
+
+}
+
+?>
\ No newline at end of file
index 455bc33..987b1ed 100644 (file)
@@ -31,6 +31,7 @@ $tests = array(
        'DatabaseTest',
        'SearchMySQL3Test',
        'SearchMySQL4Test',
+       'ArticleTest',
        );
 foreach( $tests as $test ) {
        require_once( $test . '.php' );