Skip to content

Commit 3267309

Browse files
committed
[SR-789] Remove localization of NSNumber.description
1 parent 566ffd7 commit 3267309

File tree

2 files changed

+35
-6
lines changed

2 files changed

+35
-6
lines changed

Foundation/NSNumber.swift

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -458,8 +458,15 @@ public class NSNumber : NSValue {
458458
}
459459

460460
public func descriptionWithLocale(locale: AnyObject?) -> String {
461-
guard let aLocale = locale else { return description }
462-
let formatter = CFNumberFormatterCreate(nil, (aLocale as! NSLocale)._cfObject, kCFNumberFormatterDecimalStyle)
461+
let aLocale = locale
462+
let formatter: CFNumberFormatter
463+
if (aLocale == nil) {
464+
formatter = CFNumberFormatterCreate(nil, CFLocaleCopyCurrent(), kCFNumberFormatterNoStyle)
465+
CFNumberFormatterSetProperty(formatter, kCFNumberFormatterMaxFractionDigits, 15._bridgeToObject())
466+
467+
} else {
468+
formatter = CFNumberFormatterCreate(nil, (aLocale as! NSLocale)._cfObject, kCFNumberFormatterDecimalStyle)
469+
}
463470
return CFNumberFormatterCreateStringWithNumber(nil, formatter, self._cfObject)._swiftObject
464471
}
465472

@@ -468,11 +475,13 @@ public class NSNumber : NSValue {
468475
}
469476

470477
public override var description: String {
471-
let locale = CFLocaleCopyCurrent()
472-
let formatter = CFNumberFormatterCreate(nil, locale, kCFNumberFormatterDecimalStyle)
473-
CFNumberFormatterSetProperty(formatter, kCFNumberFormatterMaxFractionDigits, 15._bridgeToObject())
474-
return CFNumberFormatterCreateStringWithNumber(nil, formatter, self._cfObject)._swiftObject
478+
return descriptionWithLocale(nil)
475479
}
480+
// let locale = CFLocaleCopyCurrent()
481+
// let formatter = CFNumberFormatterCreate(nil, locale, kCFNumberFormatterNoStyle)
482+
// CFNumberFormatterSetProperty(formatter, kCFNumberFormatterMaxFractionDigits, 15._bridgeToObject())
483+
// return CFNumberFormatterCreateStringWithNumber(nil, formatter, self._cfObject)._swiftObject
484+
// }
476485
}
477486

478487
extension CFNumber : _NSBridgable {

TestFoundation/TestNSNumber.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ class TestNSNumber : XCTestCase {
3333
("test_compareNumberWithFloat", test_compareNumberWithFloat ),
3434
("test_compareNumberWithDouble", test_compareNumberWithDouble ),
3535
("test_reflection", test_reflection ),
36+
("test_description", test_description ),
37+
("test_descriptionWithLocale", test_descriptionWithLocale ),
3638
]
3739
}
3840

@@ -418,4 +420,22 @@ class TestNSNumber : XCTestCase {
418420
default: XCTAssert(false, "NSNumber(double:) quicklook is not a Double")
419421
}
420422
}
423+
424+
func test_description() {
425+
let nsnumber: NSNumber = 1000
426+
let expectedDesc = "1000"
427+
XCTAssertEqual(nsnumber.description, expectedDesc, "expected \(expectedDesc) but received \(nsnumber.description)")
428+
}
429+
430+
func test_descriptionWithLocale() {
431+
let nsnumber: NSNumber = 1000
432+
let values : Dictionary = [
433+
NSLocale.init(localeIdentifier: "en_GB") : "1,000",
434+
NSLocale.init(localeIdentifier: "de_DE") : "1.000",
435+
]
436+
for (locale, expectedDesc) in values {
437+
let receivedDesc = nsnumber.descriptionWithLocale(locale)
438+
XCTAssertEqual(receivedDesc, expectedDesc, "expected \(expectedDesc) but received \(receivedDesc)")
439+
}
440+
}
421441
}

0 commit comments

Comments
 (0)