- Fix bug 35076
authorNikola Smolenski <smolensk@eunet.rs>
Tue, 10 Apr 2012 16:36:51 +0000 (18:36 +0200)
committerChad Horohoe <chadh@wikimedia.org>
Tue, 10 Apr 2012 17:39:46 +0000 (13:39 -0400)
- More tests, test comments

(This is the same as r114049.)

Patch set 2: Squash in missed test file

Change-Id: Icaf7fdd11499c64c42b46e442c158f22309345a7

languages/LanguageConverter.php
tests/phpunit/languages/LanguageSrTest.php

index 00259e3..18d1dbc 100644 (file)
@@ -576,7 +576,7 @@ class LanguageConverter {
         */
        public function convertTo( $text, $variant ) {
                global $wgDisableLangConversion;
-               if ( $wgDisableLangConversion || $this->guessVariant( $text, $variant ) ) {
+               if ( $wgDisableLangConversion ) {
                        return $text;
                }
                return $this->recursiveConvertTopLevel( $text, $variant );
@@ -595,18 +595,22 @@ class LanguageConverter {
                $startPos = 0;
                $out = '';
                $length = strlen( $text );
+               $shouldConvert = !$this->guessVariant( $text, $variant );
+
                while ( $startPos < $length ) {
                        $pos = strpos( $text, '-{', $startPos );
 
                        if ( $pos === false ) {
                                // No more markup, append final segment
-                               $out .= $this->autoConvert( substr( $text, $startPos ), $variant );
+                               $fragment = substr( $text, $startPos );
+                               $out .= $shouldConvert? $this->autoConvert( $fragment, $variant ): $fragment;
                                return $out;
                        }
 
                        // Markup found
                        // Append initial segment
-                       $out .= $this->autoConvert( substr( $text, $startPos, $pos - $startPos ), $variant );
+                       $fragment = substr( $text, $startPos, $pos - $startPos );
+                       $out .= $shouldConvert? $this->autoConvert( $fragment, $variant ): $fragment;
 
                        // Advance position
                        $startPos = $pos;
index a50547c..188f0ae 100644 (file)
@@ -65,18 +65,38 @@ class LanguageSrTest extends MediaWikiTestCase {
         * @author Nikola Smolenski
         */
        function testConversionToCyrillic() {
+               //A simple convertion of Latin to Cyrillic
                $this->assertEquals( 'абвг',
                        $this->convertToCyrillic( 'abvg' )
                );
+               //Same as above, but assert that -{}-s must be removed and not converted
+               $this->assertEquals( 'ljабnjвгdž',
+                       $this->convertToCyrillic( '-{lj}-ab-{nj}-vg-{dž}-' )
+               );
+               //A simple convertion of Cyrillic to Cyrillic
                $this->assertEquals( 'абвг',
                        $this->convertToCyrillic( 'абвг' )
                );
+               //Same as above, but assert that -{}-s must be removed and not converted
+               $this->assertEquals( 'ljабnjвгdž',
+                       $this->convertToCyrillic( '-{lj}-аб-{nj}-вг-{dž}-' )
+               );
+               //This text has some Latin, but is recognized as Cyrillic, so it should not be converted
                $this->assertEquals( 'abvgшђжчћ',
                        $this->convertToCyrillic( 'abvgшђжчћ' )
                );
+               //Same as above, but assert that -{}-s must be removed
+               $this->assertEquals( 'љabvgњшђжчћџ',
+                       $this->convertToCyrillic( '-{љ}-abvg-{њ}-шђжчћ-{џ}-' )
+               );
+               //This text has some Cyrillic, but is recognized as Latin, so it should be converted
                $this->assertEquals( 'абвгшђжчћ',
                        $this->convertToCyrillic( 'абвгšđžčć' )
                );
+               //Same as above, but assert that -{}-s must be removed and not converted
+               $this->assertEquals( 'ljабвгnjшђжчћdž',
+                       $this->convertToCyrillic( '-{lj}-абвг-{nj}-šđžčć-{dž}-' )
+               );
                // Roman numerals are not converted
                $this->assertEquals( 'а I б II в III г IV шђжчћ',
                        $this->convertToCyrillic( 'a I b II v III g IV šđžčć' )
@@ -84,15 +104,19 @@ class LanguageSrTest extends MediaWikiTestCase {
        }
 
        function testConversionToLatin() {
+               //A simple convertion of Latin to Latin
                $this->assertEquals( 'abcd',
                        $this->convertToLatin( 'abcd' )
                );
+               //A simple convertion of Cyrillic to Latin
                $this->assertEquals( 'abcd',
                        $this->convertToLatin( 'абцд' )
                );
+               //This text has some Latin, but is recognized as Cyrillic, so it should be converted
                $this->assertEquals( 'abcdšđžčć',
                        $this->convertToLatin( 'abcdшђжчћ' )
                );
+               //This text has some Cyrillic, but is recognized as Latin, so it should not be converted
                $this->assertEquals( 'абцдšđžčć',
                        $this->convertToLatin( 'абцдšđžčć' )
                );