Skip to content

Commit

Permalink
Fix formatting with locales using , as decimal separator
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Mark van Driel authored and Mark van Driel committed Aug 14, 2013
1 parent 3e1f975 commit 559fb58
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
15 changes: 15 additions & 0 deletions lib/Cake/Test/Case/Utility/CakeNumberTest.php
Expand Up @@ -596,6 +596,21 @@ public function testReadableSizeLocalized() {
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
*
Expand Down
10 changes: 5 additions & 5 deletions lib/Cake/Utility/CakeNumber.php
Expand Up @@ -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);
}

/**
Expand All @@ -99,13 +99,13 @@ public static function toReadableSize($size) {
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));
}
}

Expand Down

0 comments on commit 559fb58

Please sign in to comment.