From 313675320f23a8d9f2bc8a04ea5fad3a688a787c Mon Sep 17 00:00:00 2001 From: Sam Wilson Date: Thu, 7 Dec 2017 06:55:08 +0800 Subject: [PATCH] Always return a string from Language::formatNum() It says it returns a string, and so it should. Bug: T182277 Change-Id: Ic68c65c634c2557a1d07281623cd6c971b000323 --- languages/Language.php | 2 +- tests/phpunit/languages/LanguageTest.php | 27 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/languages/Language.php b/languages/Language.php index 81564ab202..8d3984dec0 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -3268,7 +3268,7 @@ class Language { } } - return $number; + return (string)$number; } /** diff --git a/tests/phpunit/languages/LanguageTest.php b/tests/phpunit/languages/LanguageTest.php index cd52366fca..e39f57ea99 100644 --- a/tests/phpunit/languages/LanguageTest.php +++ b/tests/phpunit/languages/LanguageTest.php @@ -1629,6 +1629,33 @@ class LanguageTest extends LanguageClassesTestCase { ]; } + /** + * @dataProvider testFormatNumProvider + * @covers Language::formatNum + */ + public function testFormatNum( + $translateNumerals, $langCode, $number, $nocommafy, $expected + ) { + $this->setMwGlobals( [ 'wgTranslateNumerals' => $translateNumerals ] ); + $lang = Language::factory( $langCode ); + $formattedNum = $lang->formatNum( $number, $nocommafy ); + $this->assertType( 'string', $formattedNum ); + $this->assertEquals( $expected, $formattedNum ); + } + + public function testFormatNumProvider() { + return [ + [ true, 'en', 100, false, '100' ], + [ true, 'en', 101, true, '101' ], + [ false, 'en', 103, false, '103' ], + [ false, 'en', 104, true, '104' ], + [ true, 'en', '105', false, '105' ], + [ true, 'en', '106', true, '106' ], + [ false, 'en', '107', false, '107' ], + [ false, 'en', '108', true, '108' ], + ]; + } + /** * @dataProvider parseFormattedNumberProvider */ -- 2.20.1