Skip to content

Commit 1375de0

Browse files
authored
Merge pull request #1830 from spevans/pr_sr_9685
2 parents f753b1c + 14d8f8b commit 1375de0

File tree

2 files changed

+82
-2
lines changed

2 files changed

+82
-2
lines changed

Foundation/NSNumber.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,7 @@ open class NSNumber : NSValue {
989989
return String(format: "%@", locale: locale, unsafeBitCast(_cfObject, to: UnsafePointer<CFNumber>.self))
990990
}
991991

992-
case kCFNumberFloatType, kCFNumberCGFloatType, kCFNumberFloatType:
992+
case kCFNumberFloatType, kCFNumberFloat32Type:
993993
return String(format: "%0.7g", locale: locale, self.floatValue)
994994

995995
case kCFNumberFloat64Type, kCFNumberDoubleType:
@@ -1026,7 +1026,7 @@ open class NSNumber : NSValue {
10261026
return String(format: "%@", locale: nil, unsafeBitCast(_cfObject, to: UnsafePointer<CFNumber>.self))
10271027
}
10281028

1029-
case kCFNumberFloatType, kCFNumberCGFloatType, kCFNumberFloatType:
1029+
case kCFNumberFloatType, kCFNumberFloat32Type:
10301030
return self.floatValue.description
10311031

10321032
case kCFNumberFloat64Type, kCFNumberDoubleType:

TestFoundation/TestNSNumber.swift

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1036,6 +1036,26 @@ class TestNSNumber : XCTestCase {
10361036
XCTAssertEqual(NSNumber(value: UInt32.max).description, "4294967295")
10371037
XCTAssertEqual(NSNumber(value: UInt64.min).description, "0")
10381038
XCTAssertEqual(NSNumber(value: UInt64.max).description, "18446744073709551615")
1039+
1040+
XCTAssertEqual(NSNumber(value: 1.2 as Float).description, "1.2")
1041+
XCTAssertEqual(NSNumber(value: 1000_000_000 as Float).description, "1e+09")
1042+
XCTAssertEqual(NSNumber(value: -0.99 as Float).description, "-0.99")
1043+
XCTAssertEqual(NSNumber(value: Float.zero).description, "0.0")
1044+
XCTAssertEqual(NSNumber(value: Float.nan).description, "nan")
1045+
XCTAssertEqual(NSNumber(value: Float.leastNormalMagnitude).description, "1.1754944e-38")
1046+
XCTAssertEqual(NSNumber(value: Float.leastNonzeroMagnitude).description, "1e-45")
1047+
XCTAssertEqual(NSNumber(value: Float.greatestFiniteMagnitude).description, "3.4028235e+38")
1048+
XCTAssertEqual(NSNumber(value: Float.pi).description, "3.1415925")
1049+
1050+
XCTAssertEqual(NSNumber(value: 1.2 as Double).description, "1.2")
1051+
XCTAssertEqual(NSNumber(value: 1000_000_000 as Double).description, "1000000000.0")
1052+
XCTAssertEqual(NSNumber(value: -0.99 as Double).description, "-0.99")
1053+
XCTAssertEqual(NSNumber(value: Double.zero).description, "0.0")
1054+
XCTAssertEqual(NSNumber(value: Double.nan).description, "nan")
1055+
XCTAssertEqual(NSNumber(value: Double.leastNormalMagnitude).description, "2.2250738585072014e-308")
1056+
XCTAssertEqual(NSNumber(value: Double.leastNonzeroMagnitude).description, "5e-324")
1057+
XCTAssertEqual(NSNumber(value: Double.greatestFiniteMagnitude).description, "1.7976931348623157e+308")
1058+
XCTAssertEqual(NSNumber(value: Double.pi).description, "3.141592653589793")
10391059
}
10401060

10411061
func test_descriptionWithLocale() {
@@ -1061,6 +1081,26 @@ class TestNSNumber : XCTestCase {
10611081
XCTAssertEqual(NSNumber(value: UInt64.min).description(withLocale: nil), "0")
10621082
XCTAssertEqual(NSNumber(value: UInt64.max).description(withLocale: nil), "18446744073709551615")
10631083

1084+
XCTAssertEqual(NSNumber(value: 1.2 as Float).description(withLocale: nil), "1.2")
1085+
XCTAssertEqual(NSNumber(value: 1000_000_000 as Float).description(withLocale: nil), "1e+09")
1086+
XCTAssertEqual(NSNumber(value: -0.99 as Float).description(withLocale: nil), "-0.99")
1087+
XCTAssertEqual(NSNumber(value: Float.zero).description(withLocale: nil), "0.0")
1088+
XCTAssertEqual(NSNumber(value: Float.nan).description(withLocale: nil), "nan")
1089+
XCTAssertEqual(NSNumber(value: Float.leastNormalMagnitude).description(withLocale: nil), "1.1754944e-38")
1090+
XCTAssertEqual(NSNumber(value: Float.leastNonzeroMagnitude).description(withLocale: nil), "1e-45")
1091+
XCTAssertEqual(NSNumber(value: Float.greatestFiniteMagnitude).description(withLocale: nil), "3.4028235e+38")
1092+
XCTAssertEqual(NSNumber(value: Float.pi).description(withLocale: nil), "3.1415925")
1093+
1094+
XCTAssertEqual(NSNumber(value: 1.2 as Double).description(withLocale: nil), "1.2")
1095+
XCTAssertEqual(NSNumber(value: 1000_000_000 as Double).description(withLocale: nil), "1000000000.0")
1096+
XCTAssertEqual(NSNumber(value: -0.99 as Double).description(withLocale: nil), "-0.99")
1097+
XCTAssertEqual(NSNumber(value: Double.zero).description(withLocale: nil), "0.0")
1098+
XCTAssertEqual(NSNumber(value: Double.nan).description(withLocale: nil), "nan")
1099+
XCTAssertEqual(NSNumber(value: Double.leastNormalMagnitude).description(withLocale: nil), "2.2250738585072014e-308")
1100+
XCTAssertEqual(NSNumber(value: Double.leastNonzeroMagnitude).description(withLocale: nil), "5e-324")
1101+
XCTAssertEqual(NSNumber(value: Double.greatestFiniteMagnitude).description(withLocale: nil), "1.7976931348623157e+308")
1102+
XCTAssertEqual(NSNumber(value: Double.pi).description(withLocale: nil), "3.141592653589793")
1103+
10641104
// en_GB Locale
10651105
XCTAssertEqual(NSNumber(value: 1000).description(withLocale: Locale(identifier: "en_GB")), "1,000")
10661106
XCTAssertEqual(NSNumber(value: 0.001).description(withLocale: Locale(identifier: "en_GB")), "0.001")
@@ -1086,6 +1126,26 @@ class TestNSNumber : XCTestCase {
10861126
// XCTAssertEqual(NSNumber(value: UInt64.max).description(withLocale: Locale(identifier: "en_GB")), "18,446,744,073,709,551,615")
10871127
XCTAssertEqual(NSNumber(value: UInt64.max).description(withLocale: Locale(identifier: "en_GB")), "18446744073709551615")
10881128

1129+
XCTAssertEqual(NSNumber(value: 1.2 as Float).description(withLocale: Locale(identifier: "en_GB")), "1.2")
1130+
XCTAssertEqual(NSNumber(value: 1000_000_000 as Float).description(withLocale: Locale(identifier: "en_GB")), "1E+09")
1131+
XCTAssertEqual(NSNumber(value: -0.99 as Float).description(withLocale: Locale(identifier: "en_GB")), "-0.99")
1132+
XCTAssertEqual(NSNumber(value: Float.zero).description(withLocale: Locale(identifier: "en_GB")), "0")
1133+
XCTAssertEqual(NSNumber(value: Float.nan).description(withLocale: Locale(identifier: "en_GB")), "NaN")
1134+
XCTAssertEqual(NSNumber(value: Float.leastNormalMagnitude).description(withLocale: Locale(identifier: "en_GB")), "1.175494E-38")
1135+
XCTAssertEqual(NSNumber(value: Float.leastNonzeroMagnitude).description(withLocale: Locale(identifier: "en_GB")), "1.401298E-45")
1136+
XCTAssertEqual(NSNumber(value: Float.greatestFiniteMagnitude).description(withLocale: Locale(identifier: "en_GB")), "3.402823E+38")
1137+
XCTAssertEqual(NSNumber(value: Float.pi).description(withLocale: Locale(identifier: "en_GB")), "3.141593")
1138+
1139+
XCTAssertEqual(NSNumber(value: 1.2 as Double).description(withLocale: Locale(identifier: "en_GB")), "1.2")
1140+
XCTAssertEqual(NSNumber(value: 1000_000_000 as Double).description(withLocale: Locale(identifier: "en_GB")), "1,000,000,000")
1141+
XCTAssertEqual(NSNumber(value: -0.99 as Double).description(withLocale: Locale(identifier: "en_GB")), "-0.99")
1142+
XCTAssertEqual(NSNumber(value: Double.zero).description(withLocale: Locale(identifier: "en_GB")), "0")
1143+
XCTAssertEqual(NSNumber(value: Double.nan).description(withLocale: Locale(identifier: "en_GB")), "NaN")
1144+
// Disable following three tests due to SR-9699 - ICU not built for CI testing for Foundation pull requests
1145+
//XCTAssertEqual(NSNumber(value: Double.leastNormalMagnitude).description(withLocale: Locale(identifier: "en_GB")), "2.225073858507201E-308")
1146+
//XCTAssertEqual(NSNumber(value: Double.leastNonzeroMagnitude).description(withLocale: Locale(identifier: "en_GB")), "5E-324")
1147+
//XCTAssertEqual(NSNumber(value: Double.greatestFiniteMagnitude).description(withLocale: Locale(identifier: "en_GB")), "1.797693134862316E+308")
1148+
10891149
// de_DE Locale
10901150
XCTAssertEqual(NSNumber(value: 1000).description(withLocale: Locale(identifier: "de_DE")), "1.000")
10911151
XCTAssertEqual(NSNumber(value: 0.001).description(withLocale: Locale(identifier: "de_DE")), "0,001")
@@ -1110,6 +1170,26 @@ class TestNSNumber : XCTestCase {
11101170
// This is the correct value but currently buggy and the locale is not used
11111171
//XCTAssertEqual(NSNumber(value: UInt64.max).description(withLocale: Locale(identifier: "de_DE")), "18.446.744.073.709.551.615")
11121172
XCTAssertEqual(NSNumber(value: UInt64.max).description(withLocale: Locale(identifier: "de_DE")), "18446744073709551615")
1173+
1174+
XCTAssertEqual(NSNumber(value: 1.2 as Float).description(withLocale: Locale(identifier: "de_DE")), "1,2")
1175+
XCTAssertEqual(NSNumber(value: 1000_000_000 as Float).description(withLocale: Locale(identifier: "de_DE")), "1E+09")
1176+
XCTAssertEqual(NSNumber(value: -0.99 as Float).description(withLocale: Locale(identifier: "de_DE")), "-0,99")
1177+
XCTAssertEqual(NSNumber(value: Float.pi).description(withLocale: Locale(identifier: "de_DE")), "3,141593")
1178+
XCTAssertEqual(NSNumber(value: Float.zero).description(withLocale: Locale(identifier: "de_DE")), "0")
1179+
XCTAssertEqual(NSNumber(value: Float.nan).description(withLocale: Locale(identifier: "de_DE")), "NaN")
1180+
XCTAssertEqual(NSNumber(value: Float.leastNormalMagnitude).description(withLocale: Locale(identifier: "de_DE")), "1,175494E-38")
1181+
XCTAssertEqual(NSNumber(value: Float.leastNonzeroMagnitude).description(withLocale: Locale(identifier: "de_DE")), "1,401298E-45")
1182+
XCTAssertEqual(NSNumber(value: Float.greatestFiniteMagnitude).description(withLocale: Locale(identifier: "de_DE")), "3,402823E+38")
1183+
1184+
XCTAssertEqual(NSNumber(value: 1.2 as Double).description(withLocale: Locale(identifier: "de_DE")), "1,2")
1185+
XCTAssertEqual(NSNumber(value: 1000_000_000 as Double).description(withLocale: Locale(identifier: "de_DE")), "1.000.000.000")
1186+
XCTAssertEqual(NSNumber(value: -0.99 as Double).description(withLocale: Locale(identifier: "de_DE")), "-0,99")
1187+
XCTAssertEqual(NSNumber(value: Double.zero).description(withLocale: Locale(identifier: "de_DE")), "0")
1188+
XCTAssertEqual(NSNumber(value: Double.nan).description(withLocale: Locale(identifier: "de_DE")), "NaN")
1189+
// Disable following three tests due to SR-9699 - ICU not built for CI testing for Foundation pull requests
1190+
//XCTAssertEqual(NSNumber(value: Double.leastNormalMagnitude).description(withLocale: Locale(identifier: "de_DE")), "2,225073858507201E-308")
1191+
//XCTAssertEqual(NSNumber(value: Double.leastNonzeroMagnitude).description(withLocale: Locale(identifier: "de_DE")), "5E-324")
1192+
//XCTAssertEqual(NSNumber(value: Double.greatestFiniteMagnitude).description(withLocale: Locale(identifier: "de_DE")), "1,797693134862316E+308")
11131193
}
11141194

11151195
func test_objCType() {

0 commit comments

Comments
 (0)