diff --git a/Foundation/Host.swift b/Foundation/Host.swift index f7e68cbdc3..a39cbbb77b 100644 --- a/Foundation/Host.swift +++ b/Foundation/Host.swift @@ -75,7 +75,8 @@ open class Host: NSObject { } open func isEqual(to aHost: Host) -> Bool { - return false + if self === aHost { return true } + return addresses.firstIndex { aHost.addresses.contains($0) } != nil } internal func _resolveCurrent() { diff --git a/TestFoundation/TestHost.swift b/TestFoundation/TestHost.swift index 6cdb090363..0fdc79a6e3 100644 --- a/TestFoundation/TestHost.swift +++ b/TestFoundation/TestHost.swift @@ -12,6 +12,7 @@ class TestHost: XCTestCase { static var allTests: [(String, (TestHost) -> () throws -> Void)] { return [ ("test_addressesDoNotGrow", test_addressesDoNotGrow), + ("test_isEqual", test_isEqual) ] } @@ -32,5 +33,21 @@ class TestHost: XCTestCase { let swiftAddressesSecond = swift.addresses XCTAssertEqual(swiftAddressesSecond.count, swiftAddressesFirst.count) } + + func test_isEqual() { + let host0 = Host(address: "8.8.8.8") + let host1 = Host(address: "8.8.8.8") + XCTAssertTrue(host0.isEqual(to: host1)) + + let host2 = Host(address: "8.8.8.9") + XCTAssertFalse(host0.isEqual(to: host2)) + + let swift0 = Host(name: "swift.org") + let swift1 = Host(name: "swift.org") + XCTAssertTrue(swift0.isEqual(to: swift1)) + + let google = Host(name: "google.com") + XCTAssertFalse(swift0.isEqual(to: google)) + } }