Skip to content

Commit 2570c3b

Browse files
authored
Merge pull request #2961 from spevans/pr_nsnumber_boolvalue
NSNumber: .boolValue should return true for Int64.min
2 parents 4d6d491 + 4d25ab4 commit 2570c3b

File tree

2 files changed

+5
-11
lines changed

2 files changed

+5
-11
lines changed

Sources/Foundation/NSNumber.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -896,10 +896,7 @@ open class NSNumber : NSValue {
896896
}
897897

898898
open var boolValue: Bool {
899-
// Darwin Foundation NSNumber appears to have a bug and return false for NSNumber(value: Int64.min).boolValue,
900-
// even though the documentation says:
901-
// "A 0 value always means false, and any nonzero value is interpreted as true."
902-
return (int64Value != 0) && (int64Value != Int64.min)
899+
return int64Value != 0
903900
}
904901

905902
open var intValue: Int {

Tests/Foundation/Tests/TestNSNumber.swift

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -501,10 +501,7 @@ class TestNSNumber : XCTestCase {
501501
XCTAssertEqual(NSNumber(value: Int64(0)).floatValue, 0)
502502
XCTAssertEqual(NSNumber(value: Int64(0)).doubleValue, 0)
503503

504-
//------
505-
506-
XCTAssertEqual(NSNumber(value: Int64.min).boolValue, false)
507-
504+
XCTAssertEqual(NSNumber(value: Int64.min).boolValue, true)
508505
XCTAssertEqual(NSNumber(value: Int64.min).int8Value, 0)
509506
XCTAssertEqual(NSNumber(value: Int64.min).int16Value, 0)
510507
XCTAssertEqual(NSNumber(value: Int64.min).int32Value, 0)
@@ -700,7 +697,7 @@ class TestNSNumber : XCTestCase {
700697
#if arch(arm)
701698
break
702699
#else
703-
XCTAssertEqual(NSNumber(value: Int.min).boolValue, false)
700+
XCTAssertEqual(NSNumber(value: Int.min).boolValue, true)
704701

705702
XCTAssertEqual(NSNumber(value: Int.min).int8Value, 0)
706703
XCTAssertEqual(NSNumber(value: Int.min).int16Value, 0)
@@ -1455,13 +1452,13 @@ class TestNSNumber : XCTestCase {
14551452

14561453
XCTAssertEqual(NSNumber(value: Int64.max).boolValue, true)
14571454
XCTAssertEqual(NSNumber(value: Int64.max - 1).boolValue, true)
1458-
XCTAssertEqual(NSNumber(value: Int64.min).boolValue, false) // Darwin compatibility
1455+
XCTAssertEqual(NSNumber(value: Int64.min).boolValue, true)
14591456
XCTAssertEqual(NSNumber(value: Int64.min + 1).boolValue, true)
14601457
XCTAssertEqual(NSNumber(value: Int64(-1)).boolValue, true)
14611458

14621459
XCTAssertEqual(NSNumber(value: Int.max).boolValue, true)
14631460
XCTAssertEqual(NSNumber(value: Int.max - 1).boolValue, true)
1464-
XCTAssertEqual(NSNumber(value: Int.min).boolValue, false) // Darwin compatibility
1461+
XCTAssertEqual(NSNumber(value: Int.min).boolValue, true)
14651462
XCTAssertEqual(NSNumber(value: Int.min + 1).boolValue, true)
14661463
XCTAssertEqual(NSNumber(value: Int(-1)).boolValue, true)
14671464
}

0 commit comments

Comments
 (0)