summaryrefslogtreecommitdiff
path: root/t/inc/Revision.t
diff options
context:
space:
mode:
Diffstat (limited to 't/inc/Revision.t')
-rw-r--r--t/inc/Revision.t79
1 files changed, 79 insertions, 0 deletions
diff --git a/t/inc/Revision.t b/t/inc/Revision.t
new file mode 100644
index 00000000..a6f2849b
--- /dev/null
+++ b/t/inc/Revision.t
@@ -0,0 +1,79 @@
+#!/usr/bin/env php
+<?php
+
+define( 'MEDIAWIKI', true );
+require 't/Test.php';
+
+plan( 19 );
+
+require_ok( 'includes/Defines.php' );
+require_ok( 'includes/ProfilerStub.php' );
+require_ok( 'includes/GlobalFunctions.php' );
+require_ok( 'languages/Language.php' );
+require_ok( 'includes/Revision.php' );
+
+$wgContLang = Language::factory( 'en' );
+$wgLegacyEncoding = false;
+$wgCompressRevisions = false;
+$wgInputEncoding = 'utf-8';
+$wgOutputEncoding = 'utf-8';
+
+$row = new stdClass;
+$row->old_flags = '';
+$row->old_text = 'This is a bunch of revision text.';
+cmp_ok( Revision::getRevisionText( $row ), '==',
+ 'This is a bunch of revision text.', 'Get revision text' );
+
+$row = new stdClass;
+$row->old_flags = 'gzip';
+$row->old_text = gzdeflate( 'This is a bunch of revision text.' );
+cmp_ok( Revision::getRevisionText( $row ), '==',
+ 'This is a bunch of revision text.', 'Get revision text with gzip compression' );
+
+$wgLegacyEncoding = 'iso-8859-1';
+
+$row = new stdClass;
+$row->old_flags = 'utf-8';
+$row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
+cmp_ok( Revision::getRevisionText( $row ), '==',
+ "Wiki est l'\xc3\xa9cole superieur !", 'Get revision text utf-8 native' );
+
+$row = new stdClass;
+$row->old_flags = '';
+$row->old_text = "Wiki est l'\xe9cole superieur !";
+cmp_ok( Revision::getRevisionText( $row ), '==',
+ "Wiki est l'\xc3\xa9cole superieur !", 'Get revision text utf-8 legacy' );
+
+$row = new stdClass;
+$row->old_flags = 'gzip,utf-8';
+$row->old_text = gzdeflate( "Wiki est l'\xc3\xa9cole superieur !" );
+cmp_ok( Revision::getRevisionText( $row ), '==',
+ "Wiki est l'\xc3\xa9cole superieur !", 'Get revision text utf-8 native and gzip' );
+
+$row = new stdClass;
+$row->old_flags = 'gzip';
+$row->old_text = gzdeflate( "Wiki est l'\xe9cole superieur !" );
+cmp_ok( Revision::getRevisionText( $row ), '==',
+ "Wiki est l'\xc3\xa9cole superieur !", 'Get revision text utf-8 native and gzip' );
+
+$row = new stdClass;
+$row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
+$row->old_flags = Revision::compressRevisionText( $row->old_text );
+like( $row->old_flags, '/utf-8/', "Flags should contain 'utf-8'" );
+unlike( $row->old_flags, '/gzip/', "Flags should not contain 'gzip'" );
+cmp_ok( $row->old_text, '==',
+ "Wiki est l'\xc3\xa9cole superieur !", "Direct check" );
+cmp_ok( Revision::getRevisionText( $row ), '==',
+ "Wiki est l'\xc3\xa9cole superieur !", "getRevisionText" );
+
+$wgCompressRevisions = true;
+
+$row = new stdClass;
+$row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
+$row->old_flags = Revision::compressRevisionText( $row->old_text );
+like( $row->old_flags, '/utf-8/', "Flags should contain 'utf-8'" );
+like( $row->old_flags, '/gzip/', "Flags should contain 'gzip'" );
+cmp_ok( gzinflate( $row->old_text ), '==',
+ "Wiki est l'\xc3\xa9cole superieur !", "Direct check" );
+cmp_ok( Revision::getRevisionText( $row ), '==',
+ "Wiki est l'\xc3\xa9cole superieur !", "getRevisionText" );