@@ -792,6 +792,42 @@ final class URLTests : XCTestCase {
792792 XCTAssertEqual ( url. host, " *.xn--poema-9qae5a.com.br " )
793793 }
794794
795+ func testURLHostIPLiteralCompatibility( ) throws {
796+ var url = URL ( string: " http://[::] " ) !
797+ XCTAssertEqual ( url. host, " :: " )
798+ XCTAssertEqual ( url. host ( ) , " :: " )
799+
800+ url = URL ( string: " https://[::1]:433/ " ) !
801+ XCTAssertEqual ( url. host, " ::1 " )
802+ XCTAssertEqual ( url. host ( ) , " ::1 " )
803+
804+ url = URL ( string: " https://[2001:db8::]/ " ) !
805+ XCTAssertEqual ( url. host, " 2001:db8:: " )
806+ XCTAssertEqual ( url. host ( ) , " 2001:db8:: " )
807+
808+ url = URL ( string: " https://[2001:db8::]:433 " ) !
809+ XCTAssertEqual ( url. host, " 2001:db8:: " )
810+ XCTAssertEqual ( url. host ( ) , " 2001:db8:: " )
811+
812+ url = URL ( string: " http://[fe80::a%25en1] " ) !
813+ XCTAssertEqual ( url. absoluteString, " http://[fe80::a%25en1] " )
814+ XCTAssertEqual ( url. host, " fe80::a%en1 " )
815+ XCTAssertEqual ( url. host ( percentEncoded: true ) , " fe80::a%25en1 " )
816+ XCTAssertEqual ( url. host ( percentEncoded: false ) , " fe80::a%en1 " )
817+
818+ url = URL ( string: " http://[fe80::a%en1] " ) !
819+ XCTAssertEqual ( url. absoluteString, " http://[fe80::a%25en1] " )
820+ XCTAssertEqual ( url. host, " fe80::a%en1 " )
821+ XCTAssertEqual ( url. host ( percentEncoded: true ) , " fe80::a%25en1 " )
822+ XCTAssertEqual ( url. host ( percentEncoded: false ) , " fe80::a%en1 " )
823+
824+ url = URL ( string: " http://[fe80::a%100%CustomZone] " ) !
825+ XCTAssertEqual ( url. absoluteString, " http://[fe80::a%25100%25CustomZone] " )
826+ XCTAssertEqual ( url. host, " fe80::a%100%CustomZone " )
827+ XCTAssertEqual ( url. host ( percentEncoded: true ) , " fe80::a%25100%25CustomZone " )
828+ XCTAssertEqual ( url. host ( percentEncoded: false ) , " fe80::a%100%CustomZone " )
829+ }
830+
795831 func testURLTildeFilePath( ) throws {
796832 var url = URL ( filePath: " ~ " )
797833 // "~" must either be expanded to an absolute path or resolved against a base URL
0 commit comments