From 598d96d24cd647b64f71abc479839966ecdb0678 Mon Sep 17 00:00:00 2001 From: Nikola Smolenski Date: Tue, 10 Apr 2012 18:36:51 +0200 Subject: [PATCH] - Fix bug 35076 - More tests, test comments (This is the same as r114049.) Patch set 2: Squash in missed test file Change-Id: Icaf7fdd11499c64c42b46e442c158f22309345a7 --- languages/LanguageConverter.php | 10 ++++++--- tests/phpunit/languages/LanguageSrTest.php | 24 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php index 00259e3e00..18d1dbc0be 100644 --- a/languages/LanguageConverter.php +++ b/languages/LanguageConverter.php @@ -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; diff --git a/tests/phpunit/languages/LanguageSrTest.php b/tests/phpunit/languages/LanguageSrTest.php index a50547c670..188f0aeb3f 100644 --- a/tests/phpunit/languages/LanguageSrTest.php +++ b/tests/phpunit/languages/LanguageSrTest.php @@ -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( 'абцдšđžčć' ) ); -- 2.20.1