Fix formatting with locales using , as decimal separator

No double number formatting for readable size

Fixed testPrecisionLocalized for travis (when locale is missing?)

Switched locale to nl_NL and fixed test

Skip test when locale is not available
This commit is contained in:
Mark van Driel 2013-08-14 16:00:10 +02:00
parent 3e1f97509a
commit 559fb5805b
2 changed files with 20 additions and 5 deletions

View file

@ -596,6 +596,21 @@ class CakeNumberTest extends CakeTestCase {
setlocale(LC_NUMERIC, $restore);
}
/**
* test precision() with locales
*
* @return void
*/
public function testPrecisionLocalized() {
$restore = setlocale(LC_NUMERIC, 0);
$this->skipIf(setlocale(LC_NUMERIC, 'de_DE') === false, "The German locale isn't available.");
$result = $this->Number->precision(1.234);
$this->assertEquals('1,234', $result);
setlocale(LC_NUMERIC, $restore);
}
/**
* testToPercentage method
*

View file

@ -84,7 +84,7 @@ class CakeNumber {
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/number.html#NumberHelper::precision
*/
public static function precision($value, $precision = 3) {
return sprintf("%01.{$precision}F", $value);
return sprintf("%01.{$precision}f", $value);
}
/**
@ -99,13 +99,13 @@ class CakeNumber {
case $size < 1024:
return __dn('cake', '%d Byte', '%d Bytes', $size, $size);
case round($size / 1024) < 1024:
return __d('cake', '%d KB', self::precision($size / 1024, 0));
return __d('cake', '%s KB', self::precision($size / 1024, 0));
case round($size / 1024 / 1024, 2) < 1024:
return __d('cake', '%.2f MB', self::precision($size / 1024 / 1024, 2));
return __d('cake', '%s MB', self::precision($size / 1024 / 1024, 2));
case round($size / 1024 / 1024 / 1024, 2) < 1024:
return __d('cake', '%.2f GB', self::precision($size / 1024 / 1024 / 1024, 2));
return __d('cake', '%s GB', self::precision($size / 1024 / 1024 / 1024, 2));
default:
return __d('cake', '%.2f TB', self::precision($size / 1024 / 1024 / 1024 / 1024, 2));
return __d('cake', '%s TB', self::precision($size / 1024 / 1024 / 1024 / 1024, 2));
}
}