wiki.techinc.nl/tests/phpunit/languages/LanguageTrTest.php
2011-06-03 04:25:21 +00:00

146 lines
4.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* @author Ashar Voultoiz
* @copyright Copyright © 2011, Ashar Voultoiz
* @file
*/
/** Tests for MediaWiki languages/LanguageTr.php */
class LanguageTrTest extends MediaWikiTestCase {
private $lang;
function setUp() {
$this->lang = Language::factory( 'Tr' );
}
function tearDown() {
unset( $this->lang );
}
##### Full Turkish alphabet #################################################
function testLowerCaseTurkishAlphabetToUppercase() {
$this->assertEquals( 'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ',
$this->lang->uc( 'abcçdefgğhıijklmnoöprsştuüvyz' ),
'Lower case Turkish alphabet to upper case'
);
}
function testUpperCaseTurkishAlphabetToUppercase() {
$this->assertEquals( 'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ',
$this->lang->uc( 'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ' ),
'Upper case Turkish alphabet to upper case'
);
}
function testUpperCaseTurkishAlphabetToLowercase() {
$this->assertEquals( 'abcçdefgğhıijklmnoöprsştuüvyz',
$this->lang->lc( 'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ' ),
'Upper case Turkish alphabet to lower case'
);
}
function testLowerCaseTurkishAlphabetToLowercase() {
$this->assertEquals( 'abcçdefgğhıijklmnoöprsştuüvyz',
$this->lang->lc( 'abcçdefgğhıijklmnoöprsştuüvyz' ),
'Lower case Turkish alphabet to lower case'
);
}
/**
* See @bug 28040
* Credits to #wikipedia-tr users berm, []LuCkY[] and Emperyan
* @see http://en.wikipedia.org/wiki/Dotted_and_dotless_I
* @dataProvider provideDottedAndDotlessI
*/
function testChangeCaseOfFirstCharBeingDottedAndDotlessI( $func, $input, $inputCase, $expected ) {
if( $func == 'ucfirst' ) {
$res = $this->lang->ucfirst( $input );
} elseif( $func == 'lcfirst' ) {
$res = $this->lang->lcfirst( $input );
} else {
throw new MWException( __METHOD__ . " given an invalid function name '$func'" );
}
$msg = "Converting $inputCase case '$input' with $func should give '$expected'";
$this->assertEquals( $expected, $res, $msg );
}
function provideDottedAndDotlessI() {
return array(
# function, input, input case, expected
# Case changed:
array( 'ucfirst', 'ı', 'lower', 'I' ),
array( 'ucfirst', 'i', 'lower', 'İ' ),
array( 'lcfirst', 'I', 'upper', 'ı' ),
array( 'lcfirst', 'İ', 'upper', 'i' ),
# Already using the correct case
array( 'ucfirst', 'I', 'upper', 'I' ),
array( 'ucfirst', 'İ', 'upper', 'İ' ),
array( 'lcfirst', 'ı', 'lower', 'ı' ),
array( 'lcfirst', 'i', 'lower', 'i' ),
# A real example taken from bug 28040 using
# http://tr.wikipedia.org/wiki/%C4%B0Phone
array( 'lcfirst', 'iPhone', 'lower', 'iPhone' ),
# next case is valid in Turkish but are different words if we
# consider IPhone is English!
array( 'lcfirst', 'IPhone', 'upper', 'ıPhone' ),
);
}
##### LanguageTr specificities #############################################
/**
* @cover LanguageTr:lc
* See @bug 28040
*/
function testLanguageTrLowerCasingOverride() {
$this->assertEquals( 'ııııı', $this->lang->lc( 'IIIII') );
}
/**
* @cover LanguageTr:uc
* See @bug 28040
*/
function testLanguageTrUpperCasingOverride() {
$this->assertEquals( 'İİİİİ', $this->lang->uc( 'iiiii') );
}
##### Upper casing a string #################################################
/**
* Generic test for the Turkish dotted and dotless I strings
* See @bug 28040
* @dataProvider provideUppercaseStringsWithDottedAndDotlessI
*/
function testUpperCasingOfAStringWithDottedAndDotLessI( $expected, $input ) {
$this->assertEquals( $expected, $this->lang->uc( $input ) );
}
function provideUppercaseStringsWithDottedAndDotlessI() {
return array(
# expected, input string to uc()
array( 'IIIII', 'ııııı' ),
array( 'IIIII', 'IIIII' ), #identity
array( 'İİİİİ', 'iiiii' ), # Specifically handled by LanguageTr:uc
array( 'İİİİİ', 'İİİİİ' ), #identity
);
}
##### Lower casing a string #################################################
/**
* Generic test for the Turkish dotted and dotless I strings
* See @bug 28040
* @dataProvider provideLowercaseStringsWithDottedAndDotlessI
*/
function testLowerCasingOfAStringWithDottedAndDotLessI( $expected, $input ) {
$this->assertEquals( $expected, $this->lang->lc( $input ) );
}
function provideLowercaseStringsWithDottedAndDotlessI() {
return array(
# expected, input string to lc()
array( 'ııııı', 'IIIII' ), # Specifically handled by LanguageTr:lc
array( 'ııııı', 'ııııı' ), #identity
array( 'iiiii', 'İİİİİ' ),
array( 'iiiii', 'iiiii' ), #identity
);
}
}