Permalink
Browse files

Fix formatting of decimal values when there is no fractionSymbol.

When a currency format does not include a fractionSymbol it should be
able to format fractional values.

Fixes #2253
  • Loading branch information...
1 parent 407c420 commit ada0ec4c77eea1f433e75082a301d87bee35772b @markstory markstory committed Nov 9, 2013
Showing with 30 additions and 17 deletions.
  1. +29 −16 lib/Cake/Test/Case/Utility/CakeNumberTest.php
  2. +1 −1 lib/Cake/Utility/CakeNumber.php
@@ -141,41 +141,41 @@ public function testFormatDelta() {
public function testMultibyteFormat() {
$value = '5199100.0006';
$result = $this->Number->format($value, array(
- 'thousands' => ' ',
- 'decimals' => '&',
- 'places' => 3,
- 'escape' => false,
- 'before' => '',
+ 'thousands' => ' ',
+ 'decimals' => '&',
+ 'places' => 3,
+ 'escape' => false,
+ 'before' => '',
));
$expected = '5 199 100&001';
$this->assertEquals($expected, $result);
$value = 1000.45;
$result = $this->Number->format($value, array(
- 'thousands' => ',,',
- 'decimals' => '.a',
- 'escape' => false,
+ 'thousands' => ',,',
+ 'decimals' => '.a',
+ 'escape' => false,
));
$expected = '$1,,000.a45';
$this->assertEquals($expected, $result);
$value = 519919827593784.00;
$this->Number->addFormat('RUR', array(
- 'thousands' => 'ø€ƒ‡™',
- 'decimals' => '(§.§)',
- 'escape' => false,
- 'wholeSymbol' => '',
- 'wholePosition' => 'after',
+ 'thousands' => 'ø€ƒ‡™',
+ 'decimals' => '(§.§)',
+ 'escape' => false,
+ 'wholeSymbol' => '',
+ 'wholePosition' => 'after',
));
$result = $this->Number->currency($value, 'RUR');
$expected = '519ø€ƒ‡™919ø€ƒ‡™827ø€ƒ‡™593ø€ƒ‡™784(§.§)00€';
$this->assertEquals($expected, $result);
$value = '13371337.1337';
$result = CakeNumber::format($value, array(
- 'thousands' => '- |-| /-\ >< () |2 -',
- 'decimals' => '- £€€† -',
- 'before' => ''
+ 'thousands' => '- |-| /-\ >< () |2 -',
+ 'decimals' => '- £€€† -',
+ 'before' => ''
));
$expected = '13- |-| /-\ &gt;&lt; () |2 -371- |-| /-\ &gt;&lt; () |2 -337- £€€† -13';
$this->assertEquals($expected, $result);
@@ -335,6 +335,19 @@ public function testCurrencyWithFractionAndPlaces() {
$this->assertEquals($expected, $result);
}
+/**
+ * Test that the default fraction handling does not cause issues.
+ *
+ * @return void
+ */
+ public function testCurrencyFractionSymbol() {
+ $result = $this->Number->currency(0.2, '', array(
+ 'places' => 2,
+ 'decimal' => '.'
+ ));
+ $this->assertEquals('0.2', $result);
+ }
+
/**
* Test adding currency format options to the number helper
*
@@ -75,7 +75,7 @@ class CakeNumber {
* @var array
*/
protected static $_currencyDefaults = array(
- 'wholeSymbol' => '', 'wholePosition' => 'before', 'fractionSymbol' => '', 'fractionPosition' => 'after',
+ 'wholeSymbol' => '', 'wholePosition' => 'before', 'fractionSymbol' => false, 'fractionPosition' => 'after',
'zero' => '0', 'places' => 2, 'thousands' => ',', 'decimals' => '.', 'negative' => '()', 'escape' => true,
'fractionExponent' => 2
);

0 comments on commit ada0ec4

Please sign in to comment.