Skip to content

[DarwinCompatibility] NumberFormatter fixes #1467

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 13, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions Foundation/NumberFormatter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,12 @@ open class NumberFormatter : Formatter {
case .decimal:
_usesGroupingSeparator = true
_maximumFractionDigits = 3
_minimumIntegerDigits = 1
if _minimumIntegerDigits == 0 {
_minimumIntegerDigits = 1
}
if _groupingSize == 0 {
_groupingSize = 3
}

default:
_usesSignificantDigits = true
Expand Down Expand Up @@ -586,7 +591,7 @@ open class NumberFormatter : Formatter {

//

internal var _groupingSize: Int = 3
internal var _groupingSize: Int = 0
open var groupingSize: Int {
get {
return _groupingSize
Expand Down
29 changes: 27 additions & 2 deletions TestFoundation/TestNumberFormatter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,22 @@ class TestNumberFormatter: XCTestCase {
}

func test_groupingSeparator() {
let decFormatter1 = NumberFormatter()
XCTAssertEqual(decFormatter1.groupingSize, 0)
decFormatter1.numberStyle = .decimal
XCTAssertEqual(decFormatter1.groupingSize, 3)

let decFormatter2 = NumberFormatter()
XCTAssertEqual(decFormatter2.groupingSize, 0)
decFormatter2.groupingSize = 1
decFormatter2.numberStyle = .decimal
XCTAssertEqual(decFormatter2.groupingSize, 1)

let numberFormatter = NumberFormatter()
numberFormatter.usesGroupingSeparator = true
numberFormatter.groupingSeparator = "_"
XCTAssertEqual(numberFormatter.groupingSize, 0)
numberFormatter.groupingSize = 3
let formattedString = numberFormatter.string(from: 42_000)
XCTAssertEqual(formattedString, "42_000")
}
Expand Down Expand Up @@ -198,14 +211,24 @@ class TestNumberFormatter: XCTestCase {
}

func test_minimumIntegerDigits() {
let numberFormatter1 = NumberFormatter()
XCTAssertEqual(numberFormatter1.minimumIntegerDigits, 0)
numberFormatter1.minimumIntegerDigits = 3
numberFormatter1.numberStyle = .decimal
XCTAssertEqual(numberFormatter1.minimumIntegerDigits, 3)

let numberFormatter = NumberFormatter()
XCTAssertEqual(numberFormatter.minimumIntegerDigits, 0)
numberFormatter.numberStyle = .decimal
XCTAssertEqual(numberFormatter.minimumIntegerDigits, 1)
numberFormatter.minimumIntegerDigits = 3
var formattedString = numberFormatter.string(from: 0)
XCTAssertEqual(formattedString, "000")

numberFormatter.numberStyle = .decimal
XCTAssertEqual(numberFormatter.minimumIntegerDigits, 3)
formattedString = numberFormatter.string(from: 0.1)
XCTAssertEqual(formattedString, "0.1")
XCTAssertEqual(formattedString, "000.1")
}

func test_maximumIntegerDigits() {
Expand Down Expand Up @@ -233,6 +256,7 @@ class TestNumberFormatter: XCTestCase {

func test_groupingSize() {
let numberFormatter = NumberFormatter()
XCTAssertEqual(numberFormatter.groupingSize, 0)
numberFormatter.groupingSize = 4
numberFormatter.groupingSeparator = "_"
numberFormatter.usesGroupingSeparator = true
Expand All @@ -242,6 +266,7 @@ class TestNumberFormatter: XCTestCase {

func test_secondaryGroupingSize() {
let numberFormatter = NumberFormatter()
numberFormatter.groupingSize = 3
numberFormatter.secondaryGroupingSize = 2
numberFormatter.groupingSeparator = "_"
numberFormatter.usesGroupingSeparator = true
Expand Down Expand Up @@ -471,7 +496,7 @@ class TestNumberFormatter: XCTestCase {
XCTAssertEqual(numberFormatter.perMillSymbol, "‰")
XCTAssertEqual(numberFormatter.exponentSymbol, "E")
XCTAssertEqual(numberFormatter.groupingSeparator, ",")
XCTAssertEqual(numberFormatter.paddingCharacter, "*")
XCTAssertEqual(numberFormatter.paddingCharacter, " ")
}
}