diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2011-12-03 13:29:22 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2011-12-03 13:29:22 +0100 |
commit | ca32f08966f1b51fcb19460f0996bb0c4048e6fe (patch) | |
tree | ec04cc15b867bc21eedca904cea9af0254531a11 /tests/phpunit/languages | |
parent | a22fbfc60f36f5f7ee10d5ae6fe347340c2ee67c (diff) |
Update to MediaWiki 1.18.0
* also update ArchLinux skin to chagnes in MonoBook
* Use only css to hide our menu bar when printing
Diffstat (limited to 'tests/phpunit/languages')
-rw-r--r-- | tests/phpunit/languages/LanguageBe_taraskTest.php | 30 | ||||
-rw-r--r-- | tests/phpunit/languages/LanguageTest.php | 246 | ||||
-rw-r--r-- | tests/phpunit/languages/LanguageTrTest.php | 65 |
3 files changed, 341 insertions, 0 deletions
diff --git a/tests/phpunit/languages/LanguageBe_taraskTest.php b/tests/phpunit/languages/LanguageBe_taraskTest.php new file mode 100644 index 00000000..e7fdb7ca --- /dev/null +++ b/tests/phpunit/languages/LanguageBe_taraskTest.php @@ -0,0 +1,30 @@ +<?php + +class LanguageBeTaraskTest extends MediaWikiTestCase { + private $lang; + + function setUp() { + $this->lang = Language::factory( 'Be-tarask' ); + } + function tearDown() { + unset( $this->lang ); + } + + /** see bug 23156 & r64981 */ + function testSearchRightSingleQuotationMarkAsApostroph() { + $this->assertEquals( + "'", + $this->lang->normalizeForSearch( '’' ), + 'bug 23156: U+2019 conversion to U+0027' + ); + } + /** see bug 23156 & r64981 */ + function testCommafy() { + $this->assertEquals( '1,234,567', $this->lang->commafy( '1234567' ) ); + $this->assertEquals( '12,345', $this->lang->commafy( '12345' ) ); + } + /** see bug 23156 & r64981 */ + function testDoesNotCommafyFourDigitsNumber() { + $this->assertEquals( '1234', $this->lang->commafy( '1234' ) ); + } +} diff --git a/tests/phpunit/languages/LanguageTest.php b/tests/phpunit/languages/LanguageTest.php new file mode 100644 index 00000000..aaad9c31 --- /dev/null +++ b/tests/phpunit/languages/LanguageTest.php @@ -0,0 +1,246 @@ +<?php + +class LanguageTest extends MediaWikiTestCase { + private $lang; + + function setUp() { + $this->lang = Language::factory( 'en' ); + } + function tearDown() { + unset( $this->lang ); + } + + function testLanguageConvertDoubleWidthToSingleWidth() { + $this->assertEquals( + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", + $this->lang->normalizeForSearch( + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + ), + 'convertDoubleWidth() with the full alphabet and digits' + ); + } + + function testFormatTimePeriod() { + $this->assertEquals( + "9.5s", + $this->lang->formatTimePeriod( 9.45 ), + 'formatTimePeriod() rounding (<10s)' + ); + + $this->assertEquals( + "10s", + $this->lang->formatTimePeriod( 9.95 ), + 'formatTimePeriod() rounding (<10s)' + ); + + $this->assertEquals( + "1m 0s", + $this->lang->formatTimePeriod( 59.55 ), + 'formatTimePeriod() rounding (<60s)' + ); + + $this->assertEquals( + "2m 0s", + $this->lang->formatTimePeriod( 119.55 ), + 'formatTimePeriod() rounding (<1h)' + ); + + $this->assertEquals( + "1h 0m 0s", + $this->lang->formatTimePeriod( 3599.55 ), + 'formatTimePeriod() rounding (<1h)' + ); + + $this->assertEquals( + "2h 0m 0s", + $this->lang->formatTimePeriod( 7199.55 ), + 'formatTimePeriod() rounding (>=1h)' + ); + + $this->assertEquals( + "2h 0m", + $this->lang->formatTimePeriod( 7199.55, 'avoidseconds' ), + 'formatTimePeriod() rounding (>=1h), avoidseconds' + ); + + $this->assertEquals( + "2h 0m", + $this->lang->formatTimePeriod( 7199.55, 'avoidminutes' ), + 'formatTimePeriod() rounding (>=1h), avoidminutes' + ); + + $this->assertEquals( + "48h 0m", + $this->lang->formatTimePeriod( 172799.55, 'avoidseconds' ), + 'formatTimePeriod() rounding (=48h), avoidseconds' + ); + + $this->assertEquals( + "3d 0h", + $this->lang->formatTimePeriod( 259199.55, 'avoidminutes' ), + 'formatTimePeriod() rounding (>48h), avoidminutes' + ); + + $this->assertEquals( + "2d 1h 0m", + $this->lang->formatTimePeriod( 176399.55, 'avoidseconds' ), + 'formatTimePeriod() rounding (>48h), avoidseconds' + ); + + $this->assertEquals( + "2d 1h", + $this->lang->formatTimePeriod( 176399.55, 'avoidminutes' ), + 'formatTimePeriod() rounding (>48h), avoidminutes' + ); + + $this->assertEquals( + "3d 0h 0m", + $this->lang->formatTimePeriod( 259199.55, 'avoidseconds' ), + 'formatTimePeriod() rounding (>48h), avoidminutes' + ); + + $this->assertEquals( + "2d 0h 0m", + $this->lang->formatTimePeriod( 172801.55, 'avoidseconds' ), + 'formatTimePeriod() rounding, (>48h), avoidseconds' + ); + + $this->assertEquals( + "2d 1h 1m 1s", + $this->lang->formatTimePeriod( 176460.55 ), + 'formatTimePeriod() rounding, recursion, (>48h)' + ); + } + + function testTruncate() { + $this->assertEquals( + "XXX", + $this->lang->truncate( "1234567890", 0, 'XXX' ), + 'truncate prefix, len 0, small ellipsis' + ); + + $this->assertEquals( + "12345XXX", + $this->lang->truncate( "1234567890", 8, 'XXX' ), + 'truncate prefix, small ellipsis' + ); + + $this->assertEquals( + "123456789", + $this->lang->truncate( "123456789", 5, 'XXXXXXXXXXXXXXX' ), + 'truncate prefix, large ellipsis' + ); + + $this->assertEquals( + "XXX67890", + $this->lang->truncate( "1234567890", -8, 'XXX' ), + 'truncate suffix, small ellipsis' + ); + + $this->assertEquals( + "123456789", + $this->lang->truncate( "123456789", -5, 'XXXXXXXXXXXXXXX' ), + 'truncate suffix, large ellipsis' + ); + } + + /** + * @dataProvider provideHTMLTruncateData() + */ + function testTruncateHtml( $len, $ellipsis, $input, $expected ) { + // Actual HTML... + $this->assertEquals( + $expected, + $this->lang->truncateHTML( $input, $len, $ellipsis ) + ); + } + + /** + * Array format is ($len, $ellipsis, $input, $expected) + */ + function provideHTMLTruncateData() { + return array( + array( 0, 'XXX', "1234567890", "XXX" ), + array( 8, 'XXX', "1234567890", "12345XXX" ), + array( 5, 'XXXXXXXXXXXXXXX', '1234567890', "1234567890" ), + array( 2, '***', + '<p><span style="font-weight:bold;"></span></p>', + '<p><span style="font-weight:bold;"></span></p>', + ), + array( 2, '***', + '<p><span style="font-weight:bold;">123456789</span></p>', + '<p><span style="font-weight:bold;">***</span></p>', + ), + array( 2, '***', + '<p><span style="font-weight:bold;"> 23456789</span></p>', + '<p><span style="font-weight:bold;">***</span></p>', + ), + array( 3, '***', + '<p><span style="font-weight:bold;">123456789</span></p>', + '<p><span style="font-weight:bold;">***</span></p>', + ), + array( 4, '***', + '<p><span style="font-weight:bold;">123456789</span></p>', + '<p><span style="font-weight:bold;">1***</span></p>', + ), + array( 5, '***', + '<tt><span style="font-weight:bold;">123456789</span></tt>', + '<tt><span style="font-weight:bold;">12***</span></tt>', + ), + array( 6, '***', + '<p><a href="www.mediawiki.org">123456789</a></p>', + '<p><a href="www.mediawiki.org">123***</a></p>', + ), + array( 6, '***', + '<p><a href="www.mediawiki.org">12 456789</a></p>', + '<p><a href="www.mediawiki.org">12 ***</a></p>', + ), + array( 7, '***', + '<small><span style="font-weight:bold;">123<p id="#moo">456</p>789</span></small>', + '<small><span style="font-weight:bold;">123<p id="#moo">4***</p></span></small>', + ), + array( 8, '***', + '<div><span style="font-weight:bold;">123<span>4</span>56789</span></div>', + '<div><span style="font-weight:bold;">123<span>4</span>5***</span></div>', + ), + array( 9, '***', + '<p><table style="font-weight:bold;"><tr><td>123456789</td></tr></table></p>', + '<p><table style="font-weight:bold;"><tr><td>123456789</td></tr></table></p>', + ), + array( 10, '***', + '<p><font style="font-weight:bold;">123456789</font></p>', + '<p><font style="font-weight:bold;">123456789</font></p>', + ), + ); + } + + /** + * Test Language::isValidBuiltInCode() + * @dataProvider provideLanguageCodes + */ + function testBuiltInCodeValidation( $code, $message = '' ) { + $this->assertTrue( + (bool) Language::isValidBuiltInCode( $code ), + "validating code $code $message" + ); + } + + function testBuiltInCodeValidationRejectUnderscore() { + $this->assertFalse( + (bool) Language::isValidBuiltInCode( 'be_tarask' ), + "reject underscore in language code" + ); + } + + function provideLanguageCodes() { + return array( + array( 'fr' , 'Two letters, minor case' ), + array( 'EN' , 'Two letters, upper case' ), + array( 'tyv' , 'Three letters' ), + array( 'tokipona' , 'long language code' ), + array( 'be-tarask', 'With dash' ), + array( 'Zh-classical', 'Begin with upper case, dash' ), + array( 'Be-x-old', 'With extension (two dashes)' ), + ); + } +} diff --git a/tests/phpunit/languages/LanguageTrTest.php b/tests/phpunit/languages/LanguageTrTest.php new file mode 100644 index 00000000..d2a5ff36 --- /dev/null +++ b/tests/phpunit/languages/LanguageTrTest.php @@ -0,0 +1,65 @@ +<?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 ); + } + + /** + * 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 testDottedAndDotlessI( $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' ), + + ); + } + +} |