Merge pull request #1002 from norio-nomura/fix-sr-4903-on-31
diff --git a/Foundation/NSArray.swift b/Foundation/NSArray.swift
index ca1a5cb..600e53b 100644
--- a/Foundation/NSArray.swift
+++ b/Foundation/NSArray.swift
@@ -310,6 +310,13 @@
if val1 != val2 {
return false
}
+ } else if let val1 = object(at: idx) as? _ObjectBridgeable,
+ let val2 = otherArray[idx] as? _ObjectBridgeable {
+ if !(val1._bridgeToAnyObject() as! NSObject).isEqual(val2._bridgeToAnyObject()) {
+ return false
+ }
+ } else {
+ return false
}
}
diff --git a/TestFoundation/TestNSArray.swift b/TestFoundation/TestNSArray.swift
index c905e52..e6b974e 100644
--- a/TestFoundation/TestNSArray.swift
+++ b/TestFoundation/TestNSArray.swift
@@ -421,6 +421,12 @@
XCTAssertFalse(array1.isEqual(nil))
XCTAssertFalse(array1.isEqual(NSObject()))
+
+ let objectsArray1 = NSArray(array: [NSArray(array: [0])])
+ let objectsArray2 = NSArray(array: [NSArray(array: [1])])
+ XCTAssertFalse(objectsArray1 == objectsArray2)
+ XCTAssertFalse(objectsArray1.isEqual(objectsArray2))
+ XCTAssertFalse(objectsArray1.isEqual(to: Array(objectsArray2)))
}
/// - Note: value type conversion will destroy identity. So use index(of:) instead of indexOfObjectIdentical(to:)
diff --git a/TestFoundation/TestNSDictionary.swift b/TestFoundation/TestNSDictionary.swift
index ff415ef..096f0a6 100644
--- a/TestFoundation/TestNSDictionary.swift
+++ b/TestFoundation/TestNSDictionary.swift
@@ -134,6 +134,24 @@
XCTAssertFalse(dict1.isEqual(nil))
XCTAssertFalse(dict1.isEqual(NSObject()))
+
+ let nestedDict1 = NSDictionary(dictionary: [
+ "key.entities": [
+ ["key": 0]
+ ]
+ ])
+ let nestedDict2 = NSDictionary(dictionary: [
+ "key.entities": [
+ ["key": 1]
+ ]
+ ])
+ XCTAssertFalse(nestedDict1 == nestedDict2)
+ XCTAssertFalse(nestedDict1.isEqual(nestedDict2))
+ XCTAssertFalse(nestedDict1.isEqual(to: [
+ "key.entities": [
+ ["key": 1]
+ ]
+ ]))
}
func test_copying() {