mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-09-07 03:07:12 +00:00
Added support for CPNumberFormatterPercentStyle in CPNumberFormatter.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user