Added support for CPNumberFormatterPercentStyle in CPNumberFormatter.

This commit is contained in:
Johan Stille
2012-09-24 12:08:31 +02:00
parent c8a37b4f99
commit eb2bb24c19
2 changed files with 28 additions and 0 deletions
+11
View File
@@ -90,6 +90,11 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain;
- (CPString)stringFromNumber:(CPNumber)number
{
if (_numberStyle == CPNumberFormatterPercentStyle)
{
number *= 100.0;
}
var dcmn = [number isKindOfClass:CPDecimalNumber] ? number : [[CPDecimalNumber alloc] _initWithJSNumber:number];
// TODO Add locale support.
@@ -97,6 +102,7 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain;
{
case CPNumberFormatterCurrencyStyle:
case CPNumberFormatterDecimalStyle:
case CPNumberFormatterPercentStyle:
UPDATE_NUMBER_HANDLER_IF_NECESSARY();
dcmn = [dcmn decimalNumberByRoundingAccordingToBehavior:_numberHandler];
@@ -133,6 +139,11 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain;
else
string = _currencyCode + string;
}
if (_numberStyle == CPNumberFormatterPercentStyle)
{
string += "%";
}
return string;
default:
+17
View File
@@ -143,6 +143,23 @@
[self assert:@"SEK0.02" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.015"]]];
}
- (void)testPercentStyle
{
var numberFormatter = [CPNumberFormatter new];
[numberFormatter setNumberStyle:CPNumberFormatterPercentStyle];
[self assert:@"1%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.01"]]];
[self assert:@"100%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.0"]]];
[self assert:@"150%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.5"]]];
[numberFormatter setMinimumFractionDigits:1];
[numberFormatter setMaximumFractionDigits:1];
[self assert:@"1.0%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.01"]]];
[self assert:@"100.2%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.002"]]];
[self assert:@"150.7%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.507"]]];
}
- (void)testSetGeneratesDecimalNumbers_
{
var numberFormatter = [CPNumberFormatter new];