X-Git-Url: https://git.cyclocoop.org/admin/?a=blobdiff_plain;f=tests%2Fphpunit%2Flanguages%2FLanguageTest.php;h=9e41a4eabbe0d386fa8b2a67610373527aaebd94;hb=bbd518baff8140a7ac3342cf176af542da4ad58b;hp=77c3c02368fa5aab72cb4f61e04c3c0c3cb56663;hpb=04fdc78370dbc042116488d6826e19bf3910273b;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/languages/LanguageTest.php b/tests/phpunit/languages/LanguageTest.php index 77c3c02368..9e41a4eabb 100644 --- a/tests/phpunit/languages/LanguageTest.php +++ b/tests/phpunit/languages/LanguageTest.php @@ -24,188 +24,188 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideFormattableTimes() { - return array( - array( + return [ + [ 9.45, - array(), + [], '9.5 s', 'formatTimePeriod() rounding (<10s)' - ), - array( + ], + [ 9.45, - array( 'noabbrevs' => true ), + [ 'noabbrevs' => true ], '9.5 seconds', 'formatTimePeriod() rounding (<10s)' - ), - array( + ], + [ 9.95, - array(), + [], '10 s', 'formatTimePeriod() rounding (<10s)' - ), - array( + ], + [ 9.95, - array( 'noabbrevs' => true ), + [ 'noabbrevs' => true ], '10 seconds', 'formatTimePeriod() rounding (<10s)' - ), - array( + ], + [ 59.55, - array(), + [], '1 min 0 s', 'formatTimePeriod() rounding (<60s)' - ), - array( + ], + [ 59.55, - array( 'noabbrevs' => true ), + [ 'noabbrevs' => true ], '1 minute 0 seconds', 'formatTimePeriod() rounding (<60s)' - ), - array( + ], + [ 119.55, - array(), + [], '2 min 0 s', 'formatTimePeriod() rounding (<1h)' - ), - array( + ], + [ 119.55, - array( 'noabbrevs' => true ), + [ 'noabbrevs' => true ], '2 minutes 0 seconds', 'formatTimePeriod() rounding (<1h)' - ), - array( + ], + [ 3599.55, - array(), + [], '1 h 0 min 0 s', 'formatTimePeriod() rounding (<1h)' - ), - array( + ], + [ 3599.55, - array( 'noabbrevs' => true ), + [ 'noabbrevs' => true ], '1 hour 0 minutes 0 seconds', 'formatTimePeriod() rounding (<1h)' - ), - array( + ], + [ 7199.55, - array(), + [], '2 h 0 min 0 s', 'formatTimePeriod() rounding (>=1h)' - ), - array( + ], + [ 7199.55, - array( 'noabbrevs' => true ), + [ 'noabbrevs' => true ], '2 hours 0 minutes 0 seconds', 'formatTimePeriod() rounding (>=1h)' - ), - array( + ], + [ 7199.55, 'avoidseconds', '2 h 0 min', 'formatTimePeriod() rounding (>=1h), avoidseconds' - ), - array( + ], + [ 7199.55, - array( 'avoid' => 'avoidseconds', 'noabbrevs' => true ), + [ 'avoid' => 'avoidseconds', 'noabbrevs' => true ], '2 hours 0 minutes', 'formatTimePeriod() rounding (>=1h), avoidseconds' - ), - array( + ], + [ 7199.55, 'avoidminutes', '2 h 0 min', 'formatTimePeriod() rounding (>=1h), avoidminutes' - ), - array( + ], + [ 7199.55, - array( 'avoid' => 'avoidminutes', 'noabbrevs' => true ), + [ 'avoid' => 'avoidminutes', 'noabbrevs' => true ], '2 hours 0 minutes', 'formatTimePeriod() rounding (>=1h), avoidminutes' - ), - array( + ], + [ 172799.55, 'avoidseconds', '48 h 0 min', 'formatTimePeriod() rounding (=48h), avoidseconds' - ), - array( + ], + [ 172799.55, - array( 'avoid' => 'avoidseconds', 'noabbrevs' => true ), + [ 'avoid' => 'avoidseconds', 'noabbrevs' => true ], '48 hours 0 minutes', 'formatTimePeriod() rounding (=48h), avoidseconds' - ), - array( + ], + [ 259199.55, 'avoidminutes', '3 d 0 h', 'formatTimePeriod() rounding (>48h), avoidminutes' - ), - array( + ], + [ 259199.55, - array( 'avoid' => 'avoidminutes', 'noabbrevs' => true ), + [ 'avoid' => 'avoidminutes', 'noabbrevs' => true ], '3 days 0 hours', 'formatTimePeriod() rounding (>48h), avoidminutes' - ), - array( + ], + [ 176399.55, 'avoidseconds', '2 d 1 h 0 min', 'formatTimePeriod() rounding (>48h), avoidseconds' - ), - array( + ], + [ 176399.55, - array( 'avoid' => 'avoidseconds', 'noabbrevs' => true ), + [ 'avoid' => 'avoidseconds', 'noabbrevs' => true ], '2 days 1 hour 0 minutes', 'formatTimePeriod() rounding (>48h), avoidseconds' - ), - array( + ], + [ 176399.55, 'avoidminutes', '2 d 1 h', 'formatTimePeriod() rounding (>48h), avoidminutes' - ), - array( + ], + [ 176399.55, - array( 'avoid' => 'avoidminutes', 'noabbrevs' => true ), + [ 'avoid' => 'avoidminutes', 'noabbrevs' => true ], '2 days 1 hour', 'formatTimePeriod() rounding (>48h), avoidminutes' - ), - array( + ], + [ 259199.55, 'avoidseconds', '3 d 0 h 0 min', 'formatTimePeriod() rounding (>48h), avoidseconds' - ), - array( + ], + [ 259199.55, - array( 'avoid' => 'avoidseconds', 'noabbrevs' => true ), + [ 'avoid' => 'avoidseconds', 'noabbrevs' => true ], '3 days 0 hours 0 minutes', 'formatTimePeriod() rounding (>48h), avoidseconds' - ), - array( + ], + [ 172801.55, 'avoidseconds', '2 d 0 h 0 min', 'formatTimePeriod() rounding, (>48h), avoidseconds' - ), - array( + ], + [ 172801.55, - array( 'avoid' => 'avoidseconds', 'noabbrevs' => true ), + [ 'avoid' => 'avoidseconds', 'noabbrevs' => true ], '2 days 0 hours 0 minutes', 'formatTimePeriod() rounding, (>48h), avoidseconds' - ), - array( + ], + [ 176460.55, - array(), + [], '2 d 1 h 1 min 1 s', 'formatTimePeriod() rounding, recursion, (>48h)' - ), - array( + ], + [ 176460.55, - array( 'noabbrevs' => true ), + [ 'noabbrevs' => true ], '2 days 1 hour 1 minute 1 second', 'formatTimePeriod() rounding, recursion, (>48h)' - ), - ); + ], + ]; } /** @@ -281,7 +281,7 @@ class LanguageTest extends LanguageClassesTestCase { // Actual HTML... $this->assertEquals( $expected, - $this->getLang()->truncateHTML( $input, $len, $ellipsis ) + $this->getLang()->truncateHtml( $input, $len, $ellipsis ) ); } @@ -289,59 +289,59 @@ class LanguageTest extends LanguageClassesTestCase { * @return array Format is ($len, $ellipsis, $input, $expected) */ public static function provideHTMLTruncateData() { - return array( - array( 0, 'XXX', "1234567890", "XXX" ), - array( 8, 'XXX', "1234567890", "12345XXX" ), - array( 5, 'XXXXXXXXXXXXXXX', '1234567890', "1234567890" ), - array( 2, '***', + return [ + [ 0, 'XXX', "1234567890", "XXX" ], + [ 8, 'XXX', "1234567890", "12345XXX" ], + [ 5, 'XXXXXXXXXXXXXXX', '1234567890', "1234567890" ], + [ 2, '***', '

', '

', - ), - array( 2, '***', + ], + [ 2, '***', '

123456789

', '

***

', - ), - array( 2, '***', + ], + [ 2, '***', '

 23456789

', '

***

', - ), - array( 3, '***', + ], + [ 3, '***', '

123456789

', '

***

', - ), - array( 4, '***', + ], + [ 4, '***', '

123456789

', '

1***

', - ), - array( 5, '***', + ], + [ 5, '***', '123456789', '12***', - ), - array( 6, '***', + ], + [ 6, '***', '

123456789

', '

123***

', - ), - array( 6, '***', + ], + [ 6, '***', '

12 456789

', '

12 ***

', - ), - array( 7, '***', + ], + [ 7, '***', '123

456

789
', '123

4***

', - ), - array( 8, '***', + ], + [ 8, '***', '
123456789
', '
12345***
', - ), - array( 9, '***', + ], + [ 9, '***', '

123456789

', '

123456789

', - ), - array( 10, '***', + ], + [ 10, '***', '

123456789

', '

123456789

', - ), - ); + ], + ]; } /** @@ -363,37 +363,37 @@ class LanguageTest extends LanguageClassesTestCase { * http://www.bortzmeyer.org/gabuzomeu-parsing-language-tags.html */ public static function provideWellFormedLanguageTags() { - return array( - array( 'fr', 'two-letter code' ), - array( 'fr-latn', 'two-letter code with lower case script code' ), - array( 'fr-Latn-FR', 'two-letter code with title case script code and uppercase country code' ), - array( 'fr-Latn-419', 'two-letter code with title case script code and region number' ), - array( 'fr-FR', 'two-letter code with uppercase' ), - array( 'ax-TZ', 'Not in the registry, but well-formed' ), - array( 'fr-shadok', 'two-letter code with variant' ), - array( 'fr-y-myext-myext2', 'non-x singleton' ), - array( 'fra-Latn', 'ISO 639 can be 3-letters' ), - array( 'fra', 'three-letter language code' ), - array( 'fra-FX', 'three-letter language code with country code' ), - array( 'i-klingon', 'grandfathered with singleton' ), - array( 'I-kLINgon', 'tags are case-insensitive...' ), - array( 'no-bok', 'grandfathered without singleton' ), - array( 'i-enochian', 'Grandfathered' ), - array( 'x-fr-CH', 'private use' ), - array( 'es-419', 'two-letter code with region number' ), - array( 'en-Latn-GB-boont-r-extended-sequence-x-private', 'weird, but well-formed' ), - array( 'ab-x-abc-x-abc', 'anything goes after x' ), - array( 'ab-x-abc-a-a', 'anything goes after x, including several non-x singletons' ), - array( 'i-default', 'grandfathered' ), - array( 'abcd-Latn', 'Language of 4 chars reserved for future use' ), - array( 'AaBbCcDd-x-y-any-x', 'Language of 5-8 chars, registered' ), - array( 'de-CH-1901', 'with country and year' ), - array( 'en-US-x-twain', 'with country and singleton' ), - array( 'zh-cmn', 'three-letter variant' ), - array( 'zh-cmn-Hant', 'three-letter variant and script' ), - array( 'zh-cmn-Hant-HK', 'three-letter variant, script and country' ), - array( 'xr-p-lze', 'Extension' ), - ); + return [ + [ 'fr', 'two-letter code' ], + [ 'fr-latn', 'two-letter code with lower case script code' ], + [ 'fr-Latn-FR', 'two-letter code with title case script code and uppercase country code' ], + [ 'fr-Latn-419', 'two-letter code with title case script code and region number' ], + [ 'fr-FR', 'two-letter code with uppercase' ], + [ 'ax-TZ', 'Not in the registry, but well-formed' ], + [ 'fr-shadok', 'two-letter code with variant' ], + [ 'fr-y-myext-myext2', 'non-x singleton' ], + [ 'fra-Latn', 'ISO 639 can be 3-letters' ], + [ 'fra', 'three-letter language code' ], + [ 'fra-FX', 'three-letter language code with country code' ], + [ 'i-klingon', 'grandfathered with singleton' ], + [ 'I-kLINgon', 'tags are case-insensitive...' ], + [ 'no-bok', 'grandfathered without singleton' ], + [ 'i-enochian', 'Grandfathered' ], + [ 'x-fr-CH', 'private use' ], + [ 'es-419', 'two-letter code with region number' ], + [ 'en-Latn-GB-boont-r-extended-sequence-x-private', 'weird, but well-formed' ], + [ 'ab-x-abc-x-abc', 'anything goes after x' ], + [ 'ab-x-abc-a-a', 'anything goes after x, including several non-x singletons' ], + [ 'i-default', 'grandfathered' ], + [ 'abcd-Latn', 'Language of 4 chars reserved for future use' ], + [ 'AaBbCcDd-x-y-any-x', 'Language of 5-8 chars, registered' ], + [ 'de-CH-1901', 'with country and year' ], + [ 'en-US-x-twain', 'with country and singleton' ], + [ 'zh-cmn', 'three-letter variant' ], + [ 'zh-cmn-Hant', 'three-letter variant and script' ], + [ 'zh-cmn-Hant-HK', 'three-letter variant, script and country' ], + [ 'xr-p-lze', 'Extension' ], + ]; } /** @@ -415,40 +415,40 @@ class LanguageTest extends LanguageClassesTestCase { * http://www.bortzmeyer.org/gabuzomeu-parsing-language-tags.html */ public static function provideMalformedLanguageTags() { - return array( - array( 'f', 'language too short' ), - array( 'f-Latn', 'language too short with script' ), - array( 'xr-lxs-qut', 'variants too short' ), # extlangS - array( 'fr-Latn-F', 'region too short' ), - array( 'a-value', 'language too short with region' ), - array( 'tlh-a-b-foo', 'valid three-letter with wrong variant' ), - array( + return [ + [ 'f', 'language too short' ], + [ 'f-Latn', 'language too short with script' ], + [ 'xr-lxs-qut', 'variants too short' ], # extlangS + [ 'fr-Latn-F', 'region too short' ], + [ 'a-value', 'language too short with region' ], + [ 'tlh-a-b-foo', 'valid three-letter with wrong variant' ], + [ 'i-notexist', 'grandfathered but not registered: invalid, even if we only test well-formedness' - ), - array( 'abcdefghi-012345678', 'numbers too long' ), - array( 'ab-abc-abc-abc-abc', 'invalid extensions' ), - array( 'ab-abcd-abc', 'invalid extensions' ), - array( 'ab-ab-abc', 'invalid extensions' ), - array( 'ab-123-abc', 'invalid extensions' ), - array( 'a-Hant-ZH', 'short language with valid extensions' ), - array( 'a1-Hant-ZH', 'invalid character in language' ), - array( 'ab-abcde-abc', 'invalid extensions' ), - array( 'ab-1abc-abc', 'invalid characters in extensions' ), - array( 'ab-ab-abcd', 'invalid order of extensions' ), - array( 'ab-123-abcd', 'invalid order of extensions' ), - array( 'ab-abcde-abcd', 'invalid extensions' ), - array( 'ab-1abc-abcd', 'invalid characters in extensions' ), - array( 'ab-a-b', 'extensions too short' ), - array( 'ab-a-x', 'extensions too short, even with singleton' ), - array( 'ab--ab', 'two separators' ), - array( 'ab-abc-', 'separator in the end' ), - array( '-ab-abc', 'separator in the beginning' ), - array( 'abcd-efg', 'language too long' ), - array( 'aabbccddE', 'tag too long' ), - array( 'pa_guru', 'A tag with underscore is invalid in strict mode' ), - array( 'de-f', 'subtag too short' ), - ); + ], + [ 'abcdefghi-012345678', 'numbers too long' ], + [ 'ab-abc-abc-abc-abc', 'invalid extensions' ], + [ 'ab-abcd-abc', 'invalid extensions' ], + [ 'ab-ab-abc', 'invalid extensions' ], + [ 'ab-123-abc', 'invalid extensions' ], + [ 'a-Hant-ZH', 'short language with valid extensions' ], + [ 'a1-Hant-ZH', 'invalid character in language' ], + [ 'ab-abcde-abc', 'invalid extensions' ], + [ 'ab-1abc-abc', 'invalid characters in extensions' ], + [ 'ab-ab-abcd', 'invalid order of extensions' ], + [ 'ab-123-abcd', 'invalid order of extensions' ], + [ 'ab-abcde-abcd', 'invalid extensions' ], + [ 'ab-1abc-abcd', 'invalid characters in extensions' ], + [ 'ab-a-b', 'extensions too short' ], + [ 'ab-a-x', 'extensions too short, even with singleton' ], + [ 'ab--ab', 'two separators' ], + [ 'ab-abc-', 'separator in the end' ], + [ '-ab-abc', 'separator in the beginning' ], + [ 'abcd-efg', 'language too long' ], + [ 'aabbccddE', 'tag too long' ], + [ 'pa_guru', 'A tag with underscore is invalid in strict mode' ], + [ 'de-f', 'subtag too short' ], + ]; } /** @@ -475,15 +475,15 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideLanguageCodes() { - return array( - array( 'fr', true, 'Two letters, minor case' ), - array( 'EN', false, 'Two letters, upper case' ), - array( 'tyv', true, 'Three letters' ), - array( 'tokipona', true, 'long language code' ), - array( 'be-tarask', true, 'With dash' ), - array( 'be-x-old', true, 'With extension (two dashes)' ), - array( 'be_tarask', false, 'Reject underscores' ), - ); + return [ + [ 'fr', true, 'Two letters, minor case' ], + [ 'EN', false, 'Two letters, upper case' ], + [ 'tyv', true, 'Three letters' ], + [ 'tokipona', true, 'long language code' ], + [ 'be-tarask', true, 'With dash' ], + [ 'be-x-old', true, 'With extension (two dashes)' ], + [ 'be_tarask', false, 'Reject underscores' ], + ]; } /** @@ -499,11 +499,11 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideKnownLanguageTags() { - return array( - array( 'fr', 'simple code' ), - array( 'bat-smg', 'an MW legacy tag' ), - array( 'sgs', 'an internal standard MW name, for which a legacy tag is used externally' ), - ); + return [ + [ 'fr', 'simple code' ], + [ 'bat-smg', 'an MW legacy tag' ], + [ 'sgs', 'an internal standard MW name, for which a legacy tag is used externally' ], + ]; } /** @@ -535,10 +535,10 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideUnknownLanguageTags() { - return array( - array( 'mw', 'non-existent two-letter code' ), - array( 'foo"assertEquals( $expected, $this->getLang()->formatDuration( $duration, $intervals ), @@ -1172,128 +1172,128 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideFormatDuration() { - return array( - array( + return [ + [ 0, '0 seconds', - ), - array( + ], + [ 1, '1 second', - ), - array( + ], + [ 2, '2 seconds', - ), - array( + ], + [ 60, '1 minute', - ), - array( + ], + [ 2 * 60, '2 minutes', - ), - array( + ], + [ 3600, '1 hour', - ), - array( + ], + [ 2 * 3600, '2 hours', - ), - array( + ], + [ 24 * 3600, '1 day', - ), - array( + ], + [ 2 * 86400, '2 days', - ), - array( + ], + [ // ( 365 + ( 24 * 3 + 25 ) / 400 ) * 86400 = 31556952 ( 365 + ( 24 * 3 + 25 ) / 400.0 ) * 86400, '1 year', - ), - array( + ], + [ 2 * 31556952, '2 years', - ), - array( + ], + [ 10 * 31556952, '1 decade', - ), - array( + ], + [ 20 * 31556952, '2 decades', - ), - array( + ], + [ 100 * 31556952, '1 century', - ), - array( + ], + [ 200 * 31556952, '2 centuries', - ), - array( + ], + [ 1000 * 31556952, '1 millennium', - ), - array( + ], + [ 2000 * 31556952, '2 millennia', - ), - array( + ], + [ 9001, '2 hours, 30 minutes and 1 second' - ), - array( + ], + [ 3601, '1 hour and 1 second' - ), - array( + ], + [ 31556952 + 2 * 86400 + 9000, '1 year, 2 days, 2 hours and 30 minutes' - ), - array( + ], + [ 42 * 1000 * 31556952 + 42, '42 millennia and 42 seconds' - ), - array( + ], + [ 60, '60 seconds', - array( 'seconds' ), - ), - array( + [ 'seconds' ], + ], + [ 61, '61 seconds', - array( 'seconds' ), - ), - array( + [ 'seconds' ], + ], + [ 1, '1 second', - array( 'seconds' ), - ), - array( + [ 'seconds' ], + ], + [ 31556952 + 2 * 86400 + 9000, '1 year, 2 days and 150 minutes', - array( 'years', 'days', 'minutes' ), - ), - array( + [ 'years', 'days', 'minutes' ], + ], + [ 42, '0 days', - array( 'years', 'days' ), - ), - array( + [ 'years', 'days' ], + ], + [ 31556952 + 2 * 86400 + 9000, '1 year, 2 days and 150 minutes', - array( 'minutes', 'days', 'years' ), - ), - array( + [ 'minutes', 'days', 'years' ], + ], + [ 42, '0 days', - array( 'days', 'years' ), - ), - ); + [ 'days', 'years' ], + ], + ]; } /** @@ -1310,19 +1310,19 @@ class LanguageTest extends LanguageClassesTestCase { public static function provideCheckTitleEncodingData() { // @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong - return array( - array( "" ), - array( "United States of America" ), // 7bit ASCII - array( rawurldecode( "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e" ) ), - array( + return [ + [ "" ], + [ "United States of America" ], // 7bit ASCII + [ rawurldecode( "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e" ) ], + [ rawurldecode( "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn" ) - ), + ], // The following two data sets come from bug 36839. They fail if checkTitleEncoding uses a regexp to test for // valid UTF-8 encoding and the pcre.recursion_limit is low (like, say, 1024). They succeed if checkTitleEncoding // uses mb_check_encoding for its test. - array( + [ rawurldecode( "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn%7C" . "Catherine%20Willows%7CDavid%20Hodges%7CDavid%20Phillips%7CGil%20Grissom%7CGreg%20Sanders%7CHodges%7C" @@ -1339,8 +1339,8 @@ class LanguageTest extends LanguageClassesTestCase { . "Sara%20Sidle%7CSofia%20Curtis%7CS%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e%7CWallace%20Langham%7C" . "Warrick%20Brown%7CWendy%20Simms%7C%C3%89tats-Unis" ), - ), - array( + ], + [ rawurldecode( "Mod%C3%A8le%3AArrondissements%20homonymes%7CMod%C3%A8le%3ABandeau%20standard%20pour%20page%20d'homonymie%7C" . "Mod%C3%A8le%3ABatailles%20homonymes%7CMod%C3%A8le%3ACantons%20homonymes%7C" @@ -1358,8 +1358,8 @@ class LanguageTest extends LanguageClassesTestCase { . "Mod%C3%A8le%3ATitres%20homonymes%7CMod%C3%A8le%3AToponymie%7CMod%C3%A8le%3AUnit%C3%A9s%20homonymes%7C" . "Mod%C3%A8le%3AVilles%20homonymes%7CMod%C3%A8le%3A%C3%89difices%20religieux%20homonymes" ) - ) - ); + ] + ]; // @codingStandardsIgnoreEnd } @@ -1376,50 +1376,50 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideRomanNumeralsData() { - return array( - array( 1, 'I' ), - array( 2, 'II' ), - array( 3, 'III' ), - array( 4, 'IV' ), - array( 5, 'V' ), - array( 6, 'VI' ), - array( 7, 'VII' ), - array( 8, 'VIII' ), - array( 9, 'IX' ), - array( 10, 'X' ), - array( 20, 'XX' ), - array( 30, 'XXX' ), - array( 40, 'XL' ), - array( 49, 'XLIX' ), - array( 50, 'L' ), - array( 60, 'LX' ), - array( 70, 'LXX' ), - array( 80, 'LXXX' ), - array( 90, 'XC' ), - array( 99, 'XCIX' ), - array( 100, 'C' ), - array( 200, 'CC' ), - array( 300, 'CCC' ), - array( 400, 'CD' ), - array( 500, 'D' ), - array( 600, 'DC' ), - array( 700, 'DCC' ), - array( 800, 'DCCC' ), - array( 900, 'CM' ), - array( 999, 'CMXCIX' ), - array( 1000, 'M' ), - array( 1989, 'MCMLXXXIX' ), - array( 2000, 'MM' ), - array( 3000, 'MMM' ), - array( 4000, 'MMMM' ), - array( 5000, 'MMMMM' ), - array( 6000, 'MMMMMM' ), - array( 7000, 'MMMMMMM' ), - array( 8000, 'MMMMMMMM' ), - array( 9000, 'MMMMMMMMM' ), - array( 9999, 'MMMMMMMMMCMXCIX' ), - array( 10000, 'MMMMMMMMMM' ), - ); + return [ + [ 1, 'I' ], + [ 2, 'II' ], + [ 3, 'III' ], + [ 4, 'IV' ], + [ 5, 'V' ], + [ 6, 'VI' ], + [ 7, 'VII' ], + [ 8, 'VIII' ], + [ 9, 'IX' ], + [ 10, 'X' ], + [ 20, 'XX' ], + [ 30, 'XXX' ], + [ 40, 'XL' ], + [ 49, 'XLIX' ], + [ 50, 'L' ], + [ 60, 'LX' ], + [ 70, 'LXX' ], + [ 80, 'LXXX' ], + [ 90, 'XC' ], + [ 99, 'XCIX' ], + [ 100, 'C' ], + [ 200, 'CC' ], + [ 300, 'CCC' ], + [ 400, 'CD' ], + [ 500, 'D' ], + [ 600, 'DC' ], + [ 700, 'DCC' ], + [ 800, 'DCCC' ], + [ 900, 'CM' ], + [ 999, 'CMXCIX' ], + [ 1000, 'M' ], + [ 1989, 'MCMLXXXIX' ], + [ 2000, 'MM' ], + [ 3000, 'MMM' ], + [ 4000, 'MMMM' ], + [ 5000, 'MMMMM' ], + [ 6000, 'MMMMMM' ], + [ 7000, 'MMMMMMM' ], + [ 8000, 'MMMMMMMM' ], + [ 9000, 'MMMMMMMMM' ], + [ 9999, 'MMMMMMMMMCMXCIX' ], + [ 10000, 'MMMMMMMMMM' ], + ]; } /** @@ -1435,62 +1435,62 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideHebrewNumeralsData() { - return array( - array( -1, -1 ), - array( 0, 0 ), - array( 1, "א'" ), - array( 2, "ב'" ), - array( 3, "ג'" ), - array( 4, "ד'" ), - array( 5, "ה'" ), - array( 6, "ו'" ), - array( 7, "ז'" ), - array( 8, "ח'" ), - array( 9, "ט'" ), - array( 10, "י'" ), - array( 11, 'י"א' ), - array( 14, 'י"ד' ), - array( 15, 'ט"ו' ), - array( 16, 'ט"ז' ), - array( 17, 'י"ז' ), - array( 20, "כ'" ), - array( 21, 'כ"א' ), - array( 30, "ל'" ), - array( 40, "מ'" ), - array( 50, "נ'" ), - array( 60, "ס'" ), - array( 70, "ע'" ), - array( 80, "פ'" ), - array( 90, "צ'" ), - array( 99, 'צ"ט' ), - array( 100, "ק'" ), - array( 101, 'ק"א' ), - array( 110, 'ק"י' ), - array( 200, "ר'" ), - array( 300, "ש'" ), - array( 400, "ת'" ), - array( 500, 'ת"ק' ), - array( 800, 'ת"ת' ), - array( 1000, "א' אלף" ), - array( 1001, "א'א'" ), - array( 1012, "א'י\"ב" ), - array( 1020, "א'ך'" ), - array( 1030, "א'ל'" ), - array( 1081, "א'פ\"א" ), - array( 2000, "ב' אלפים" ), - array( 2016, "ב'ט\"ז" ), - array( 3000, "ג' אלפים" ), - array( 4000, "ד' אלפים" ), - array( 4904, "ד'תתק\"ד" ), - array( 5000, "ה' אלפים" ), - array( 5680, "ה'תר\"ף" ), - array( 5690, "ה'תר\"ץ" ), - array( 5708, "ה'תש\"ח" ), - array( 5720, "ה'תש\"ך" ), - array( 5740, "ה'תש\"ם" ), - array( 5750, "ה'תש\"ן" ), - array( 5775, "ה'תשע\"ה" ), - ); + return [ + [ -1, -1 ], + [ 0, 0 ], + [ 1, "א'" ], + [ 2, "ב'" ], + [ 3, "ג'" ], + [ 4, "ד'" ], + [ 5, "ה'" ], + [ 6, "ו'" ], + [ 7, "ז'" ], + [ 8, "ח'" ], + [ 9, "ט'" ], + [ 10, "י'" ], + [ 11, 'י"א' ], + [ 14, 'י"ד' ], + [ 15, 'ט"ו' ], + [ 16, 'ט"ז' ], + [ 17, 'י"ז' ], + [ 20, "כ'" ], + [ 21, 'כ"א' ], + [ 30, "ל'" ], + [ 40, "מ'" ], + [ 50, "נ'" ], + [ 60, "ס'" ], + [ 70, "ע'" ], + [ 80, "פ'" ], + [ 90, "צ'" ], + [ 99, 'צ"ט' ], + [ 100, "ק'" ], + [ 101, 'ק"א' ], + [ 110, 'ק"י' ], + [ 200, "ר'" ], + [ 300, "ש'" ], + [ 400, "ת'" ], + [ 500, 'ת"ק' ], + [ 800, 'ת"ת' ], + [ 1000, "א' אלף" ], + [ 1001, "א'א'" ], + [ 1012, "א'י\"ב" ], + [ 1020, "א'ך'" ], + [ 1030, "א'ל'" ], + [ 1081, "א'פ\"א" ], + [ 2000, "ב' אלפים" ], + [ 2016, "ב'ט\"ז" ], + [ 3000, "ג' אלפים" ], + [ 4000, "ד' אלפים" ], + [ 4904, "ד'תתק\"ד" ], + [ 5000, "ה' אלפים" ], + [ 5680, "ה'תר\"ף" ], + [ 5690, "ה'תר\"ץ" ], + [ 5708, "ה'תש\"ח" ], + [ 5720, "ה'תש\"ך" ], + [ 5740, "ה'תש\"ם" ], + [ 5750, "ה'תש\"ן" ], + [ 5775, "ה'תשע\"ה" ], + ]; } /** @@ -1504,38 +1504,38 @@ class LanguageTest extends LanguageClassesTestCase { public static function providePluralData() { // Params are: [expected text, number given, [the plural forms]] - return array( - array( 'plural', 0, array( + return [ + [ 'plural', 0, [ 'singular', 'plural' - ) ), - array( 'explicit zero', 0, array( + ] ], + [ 'explicit zero', 0, [ '0=explicit zero', 'singular', 'plural' - ) ), - array( 'explicit one', 1, array( + ] ], + [ 'explicit one', 1, [ 'singular', 'plural', '1=explicit one', - ) ), - array( 'singular', 1, array( + ] ], + [ 'singular', 1, [ 'singular', 'plural', '0=explicit zero', - ) ), - array( 'plural', 3, array( + ] ], + [ 'plural', 3, [ '0=explicit zero', '1=explicit one', 'singular', 'plural' - ) ), - array( 'explicit eleven', 11, array( + ] ], + [ 'explicit eleven', 11, [ 'singular', 'plural', '11=explicit eleven', - ) ), - array( 'plural', 12, array( + ] ], + [ 'plural', 12, [ 'singular', 'plural', '11=explicit twelve', - ) ), - array( 'plural', 12, array( + ] ], + [ 'plural', 12, [ 'singular', 'plural', '=explicit form', - ) ), - array( 'other', 2, array( + ] ], + [ 'other', 2, [ 'kissa=kala', '1=2=3', 'other', - ) ), - array( '', 2, array( + ] ], + [ '', 2, [ '0=explicit zero', '1=explicit one', - ) ), - ); + ] ], + ]; } /** @@ -1579,24 +1579,24 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideTranslateBlockExpiry() { - return array( - array( '2 hours', '2 hours', 'simple data from ipboptions' ), - array( 'indefinite', 'infinite', 'infinite from ipboptions' ), - array( 'indefinite', 'infinity', 'alternative infinite from ipboptions' ), - array( 'indefinite', 'indefinite', 'another alternative infinite from ipboptions' ), - array( array( 'formatDuration', 1023 * 60 * 60 ), '1023 hours', 'relative' ), - array( array( 'formatDuration', -1023 ), '-1023 seconds', 'negative relative' ), - array( array( 'formatDuration', 0 ), 'now', 'now' ), - array( - array( 'timeanddate', '20120102070000' ), + return [ + [ '2 hours', '2 hours', 'simple data from ipboptions' ], + [ 'indefinite', 'infinite', 'infinite from ipboptions' ], + [ 'indefinite', 'infinity', 'alternative infinite from ipboptions' ], + [ 'indefinite', 'indefinite', 'another alternative infinite from ipboptions' ], + [ [ 'formatDuration', 1023 * 60 * 60 ], '1023 hours', 'relative' ], + [ [ 'formatDuration', -1023 ], '-1023 seconds', 'negative relative' ], + [ [ 'formatDuration', 0 ], 'now', 'now' ], + [ + [ 'timeanddate', '20120102070000' ], '2012-1-1 7:00 +1 day', 'mixed, handled as absolute' - ), - array( array( 'timeanddate', '19910203040506' ), '1991-2-3 4:05:06', 'absolute' ), - array( array( 'timeanddate', '19700101000000' ), '1970-1-1 0:00:00', 'absolute at epoch' ), - array( array( 'timeanddate', '19691231235959' ), '1969-12-31 23:59:59', 'time before epoch' ), - array( 'dummy', 'dummy', 'return garbage as is' ), - ); + ], + [ [ 'timeanddate', '19910203040506' ], '1991-2-3 4:05:06', 'absolute' ], + [ [ 'timeanddate', '19700101000000' ], '1970-1-1 0:00:00', 'absolute at epoch' ], + [ [ 'timeanddate', '19691231235959' ], '1969-12-31 23:59:59', 'time before epoch' ], + [ 'dummy', 'dummy', 'return garbage as is' ], + ]; } /** @@ -1612,14 +1612,14 @@ class LanguageTest extends LanguageClassesTestCase { } public function parseFormattedNumberProvider() { - return array( - array( 'de', 377.01 ), - array( 'fa', 334 ), - array( 'fa', 382.772 ), - array( 'ar', 1844 ), - array( 'lzh', 3731 ), - array( 'zh-classical', 7432 ) - ); + return [ + [ 'de', 377.01 ], + [ 'fa', 334 ], + [ 'fa', 382.772 ], + [ 'ar', 1844 ], + [ 'lzh', 3731 ], + [ 'zh-classical', 7432 ] + ]; } /** @@ -1635,25 +1635,25 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideCommafyData() { - return array( - array( -1, '-1' ), - array( 10, '10' ), - array( 100, '100' ), - array( 1000, '1,000' ), - array( 10000, '10,000' ), - array( 100000, '100,000' ), - array( 1000000, '1,000,000' ), - array( -1.0001, '-1.0001' ), - array( 1.0001, '1.0001' ), - array( 10.0001, '10.0001' ), - array( 100.0001, '100.0001' ), - array( 1000.0001, '1,000.0001' ), - array( 10000.0001, '10,000.0001' ), - array( 100000.0001, '100,000.0001' ), - array( 1000000.0001, '1,000,000.0001' ), - array( '200000000000000000000', '200,000,000,000,000,000,000' ), - array( '-200000000000000000000', '-200,000,000,000,000,000,000' ), - ); + return [ + [ -1, '-1' ], + [ 10, '10' ], + [ 100, '100' ], + [ 1000, '1,000' ], + [ 10000, '10,000' ], + [ 100000, '100,000' ], + [ 1000000, '1,000,000' ], + [ -1.0001, '-1.0001' ], + [ 1.0001, '1.0001' ], + [ 10.0001, '10.0001' ], + [ 100.0001, '100.0001' ], + [ 1000.0001, '1,000.0001' ], + [ 10000.0001, '10,000.0001' ], + [ 100000.0001, '100,000.0001' ], + [ 1000000.0001, '1,000,000.0001' ], + [ '200000000000000000000', '200,000,000,000,000,000,000' ], + [ '-200000000000000000000', '-200,000,000,000,000,000,000' ], + ]; } /** @@ -1665,11 +1665,11 @@ class LanguageTest extends LanguageClassesTestCase { $s = $lang->getMessageFromDB( 'word-separator' ); $c = $lang->getMessageFromDB( 'comma-separator' ); - $this->assertEquals( '', $lang->listToText( array() ) ); - $this->assertEquals( 'a', $lang->listToText( array( 'a' ) ) ); - $this->assertEquals( "a{$and}{$s}b", $lang->listToText( array( 'a', 'b' ) ) ); - $this->assertEquals( "a{$c}b{$and}{$s}c", $lang->listToText( array( 'a', 'b', 'c' ) ) ); - $this->assertEquals( "a{$c}b{$c}c{$and}{$s}d", $lang->listToText( array( 'a', 'b', 'c', 'd' ) ) ); + $this->assertEquals( '', $lang->listToText( [] ) ); + $this->assertEquals( 'a', $lang->listToText( [ 'a' ] ) ); + $this->assertEquals( "a{$and}{$s}b", $lang->listToText( [ 'a', 'b' ] ) ); + $this->assertEquals( "a{$c}b{$and}{$s}c", $lang->listToText( [ 'a', 'b', 'c' ] ) ); + $this->assertEquals( "a{$c}b{$c}c{$and}{$s}d", $lang->listToText( [ 'a', 'b', 'c', 'd' ] ) ); } /** @@ -1681,12 +1681,12 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideIsSupportedLanguage() { - return array( - array( 'en', true, 'is supported language' ), - array( 'fi', true, 'is supported language' ), - array( 'bunny', false, 'is not supported language' ), - array( 'FI', false, 'is not supported language, input should be in lower case' ), - ); + return [ + [ 'en', true, 'is supported language' ], + [ 'fi', true, 'is supported language' ], + [ 'bunny', false, 'is not supported language' ], + [ 'FI', false, 'is not supported language, input should be in lower case' ], + ]; } /** @@ -1703,15 +1703,15 @@ class LanguageTest extends LanguageClassesTestCase { } public static function provideGetParentLanguage() { - return array( - array( 'zh-cn', 'zh', 'zh is the parent language of zh-cn' ), - array( 'zh', 'zh', 'zh is defined as the parent language of zh, ' - . 'because zh converter can convert zh-cn to zh' ), - array( 'zh-invalid', null, 'do not be fooled by arbitrarily composed language codes' ), - array( 'en-gb', null, 'en does not have converter' ), - array( 'en', null, 'en does not have converter. Although FakeConverter ' - . 'handles en -> en conversion but it is useless' ), - ); + return [ + [ 'zh-cn', 'zh', 'zh is the parent language of zh-cn' ], + [ 'zh', 'zh', 'zh is defined as the parent language of zh, ' + . 'because zh converter can convert zh-cn to zh' ], + [ 'zh-invalid', null, 'do not be fooled by arbitrarily composed language codes' ], + [ 'en-gb', null, 'en does not have converter' ], + [ 'en', null, 'en does not have converter. Although FakeConverter ' + . 'handles en -> en conversion but it is useless' ], + ]; } /** @@ -1728,14 +1728,27 @@ class LanguageTest extends LanguageClassesTestCase { public static function provideGetNamespaceAliases() { // TODO: Add tests for NS_PROJECT_TALK and GenderNamespaces - return array( - array( + return [ + [ 'zh', - array( + [ '文件' => NS_FILE, '檔案' => NS_FILE, - ), - ), - ); + ], + ], + ]; + } + + public function testEquals() { + $en1 = new Language(); + $en1->setCode( 'en' ); + + $en2 = Language::factory( 'en' ); + $en2->setCode( 'en' ); + + $this->assertTrue( $en1->equals( $en2 ), 'en equals en' ); + + $fr = Language::factory( 'fr' ); + $this->assertFalse( $en1->equals( $fr ), 'en not equals fr' ); } }