Skip to content

Commit 6501fa2

Browse files
authored
Merge pull request #1467 from spevans/pr_numberformatter_darwin_compat
2 parents 49de37b + 2827171 commit 6501fa2

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

Foundation/NumberFormatter.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,12 @@ open class NumberFormatter : Formatter {
195195
case .decimal:
196196
_usesGroupingSeparator = true
197197
_maximumFractionDigits = 3
198-
_minimumIntegerDigits = 1
198+
if _minimumIntegerDigits == 0 {
199+
_minimumIntegerDigits = 1
200+
}
201+
if _groupingSize == 0 {
202+
_groupingSize = 3
203+
}
199204

200205
default:
201206
_usesSignificantDigits = true
@@ -586,7 +591,7 @@ open class NumberFormatter : Formatter {
586591

587592
//
588593

589-
internal var _groupingSize: Int = 3
594+
internal var _groupingSize: Int = 0
590595
open var groupingSize: Int {
591596
get {
592597
return _groupingSize

TestFoundation/TestNumberFormatter.swift

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,22 @@ class TestNumberFormatter: XCTestCase {
103103
}
104104

105105
func test_groupingSeparator() {
106+
let decFormatter1 = NumberFormatter()
107+
XCTAssertEqual(decFormatter1.groupingSize, 0)
108+
decFormatter1.numberStyle = .decimal
109+
XCTAssertEqual(decFormatter1.groupingSize, 3)
110+
111+
let decFormatter2 = NumberFormatter()
112+
XCTAssertEqual(decFormatter2.groupingSize, 0)
113+
decFormatter2.groupingSize = 1
114+
decFormatter2.numberStyle = .decimal
115+
XCTAssertEqual(decFormatter2.groupingSize, 1)
116+
106117
let numberFormatter = NumberFormatter()
107118
numberFormatter.usesGroupingSeparator = true
108119
numberFormatter.groupingSeparator = "_"
120+
XCTAssertEqual(numberFormatter.groupingSize, 0)
121+
numberFormatter.groupingSize = 3
109122
let formattedString = numberFormatter.string(from: 42_000)
110123
XCTAssertEqual(formattedString, "42_000")
111124
}
@@ -198,14 +211,24 @@ class TestNumberFormatter: XCTestCase {
198211
}
199212

200213
func test_minimumIntegerDigits() {
214+
let numberFormatter1 = NumberFormatter()
215+
XCTAssertEqual(numberFormatter1.minimumIntegerDigits, 0)
216+
numberFormatter1.minimumIntegerDigits = 3
217+
numberFormatter1.numberStyle = .decimal
218+
XCTAssertEqual(numberFormatter1.minimumIntegerDigits, 3)
219+
201220
let numberFormatter = NumberFormatter()
221+
XCTAssertEqual(numberFormatter.minimumIntegerDigits, 0)
222+
numberFormatter.numberStyle = .decimal
223+
XCTAssertEqual(numberFormatter.minimumIntegerDigits, 1)
202224
numberFormatter.minimumIntegerDigits = 3
203225
var formattedString = numberFormatter.string(from: 0)
204226
XCTAssertEqual(formattedString, "000")
205227

206228
numberFormatter.numberStyle = .decimal
229+
XCTAssertEqual(numberFormatter.minimumIntegerDigits, 3)
207230
formattedString = numberFormatter.string(from: 0.1)
208-
XCTAssertEqual(formattedString, "0.1")
231+
XCTAssertEqual(formattedString, "000.1")
209232
}
210233

211234
func test_maximumIntegerDigits() {
@@ -233,6 +256,7 @@ class TestNumberFormatter: XCTestCase {
233256

234257
func test_groupingSize() {
235258
let numberFormatter = NumberFormatter()
259+
XCTAssertEqual(numberFormatter.groupingSize, 0)
236260
numberFormatter.groupingSize = 4
237261
numberFormatter.groupingSeparator = "_"
238262
numberFormatter.usesGroupingSeparator = true
@@ -242,6 +266,7 @@ class TestNumberFormatter: XCTestCase {
242266

243267
func test_secondaryGroupingSize() {
244268
let numberFormatter = NumberFormatter()
269+
numberFormatter.groupingSize = 3
245270
numberFormatter.secondaryGroupingSize = 2
246271
numberFormatter.groupingSeparator = "_"
247272
numberFormatter.usesGroupingSeparator = true
@@ -471,7 +496,7 @@ class TestNumberFormatter: XCTestCase {
471496
XCTAssertEqual(numberFormatter.perMillSymbol, "")
472497
XCTAssertEqual(numberFormatter.exponentSymbol, "E")
473498
XCTAssertEqual(numberFormatter.groupingSeparator, ",")
474-
XCTAssertEqual(numberFormatter.paddingCharacter, "*")
499+
XCTAssertEqual(numberFormatter.paddingCharacter, " ")
475500
}
476501
}
477502

0 commit comments

Comments
 (0)