@@ -792,6 +792,42 @@ final class URLTests : XCTestCase {
792
792
XCTAssertEqual ( url. host, " *.xn--poema-9qae5a.com.br " )
793
793
}
794
794
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
+
795
831
func testURLTildeFilePath( ) throws {
796
832
var url = URL ( filePath: " ~ " )
797
833
// "~" must either be expanded to an absolute path or resolved against a base URL
0 commit comments