From: Reedy Date: Tue, 17 Jul 2012 22:56:51 +0000 (+0100) Subject: Add testRomanNumerals X-Git-Tag: 1.31.0-rc.0~22983 X-Git-Url: http://git.cyclocoop.org/%27.%28%24current%20%3E%202?a=commitdiff_plain;h=c50a8db395f85fff8f98cdb40abbbc90164ef7ee;p=lhc%2Fweb%2Fwiklou.git Add testRomanNumerals Up Language::romanNumeral() to work upto 10,000 Does anyone know how do do letters with an underscore ontop of them? ;) Change-Id: Ib1b1415126af855ce5fb55f81b71534c26d84cc9 --- diff --git a/languages/Language.php b/languages/Language.php index 430209d57c..8389281af5 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -1272,7 +1272,7 @@ class Language { $s .= $num; $raw = false; } elseif ( $roman ) { - $s .= self::romanNumeral( $num ); + $s .= Language::romanNumeral( $num ); $roman = false; } elseif ( $hebrewNum ) { $s .= self::hebrewNumeral( $num ); @@ -1661,7 +1661,7 @@ class Language { } /** - * Roman number formatting up to 3000 + * Roman number formatting up to 10000 * * @param $num int * @@ -1672,11 +1672,11 @@ class Language { array( '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X' ), array( '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', 'C' ), array( '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', 'M' ), - array( '', 'M', 'MM', 'MMM' ) + array( '', 'M', 'MM', 'MMM', 'MMMM', 'MMMMM', 'MMMMMM', 'MMMMMMM', 'MMMMMMMM', 'MMMMMMMMM', 'MMMMMMMMMM' ) ); $num = intval( $num ); - if ( $num > 3000 || $num <= 0 ) { + if ( $num > 10000 || $num <= 0 ) { return $num; } diff --git a/tests/phpunit/languages/LanguageTest.php b/tests/phpunit/languages/LanguageTest.php index bef76776cd..70254490d6 100644 --- a/tests/phpunit/languages/LanguageTest.php +++ b/tests/phpunit/languages/LanguageTest.php @@ -1007,4 +1007,63 @@ class LanguageTest extends MediaWikiTestCase { ) ); } + + /** + * @dataProvider provideRomanNumeralsData + */ + function testRomanNumerals( $num, $numerals ) { + $this->assertEquals( + $numerals, + Language::romanNumeral( $num ), + "romanNumeral('$num')" + ); + } + + 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' ), + ); + } } +