@@ -55,6 +55,26 @@ class HostnamesTest {
55
55
assertThat(canonicalizeInetAddress(addressBIpv6)).isEqualTo(addressBIpv4)
56
56
}
57
57
58
+ @Test
59
+ fun canonicalizeInetAddressIPv6RepresentationOfCompatibleIPV4 () {
60
+ val addressAIpv6 = decodeIpv6(" ::192.168.0.1" )!!
61
+ assertThat(canonicalizeInetAddress(addressAIpv6)).isEqualTo(
62
+ ByteArray (12 ) +
63
+ byteArrayOf(
64
+ 192 .toByte(),
65
+ 168 .toByte(),
66
+ 0 ,
67
+ 1 ,
68
+ ),
69
+ )
70
+ }
71
+
72
+ @Test
73
+ fun canonicalizeInetAddressIPv6RepresentationOfMappedIPV4 () {
74
+ val addressAIpv6 = decodeIpv6(" ::FFFF:192.168.0.1" )!!
75
+ assertThat(canonicalizeInetAddress(addressAIpv6)).isEqualTo(byteArrayOf(192 .toByte(), 168 .toByte(), 0 , 1 ))
76
+ }
77
+
58
78
@Test
59
79
fun inet4AddressToAscii () {
60
80
assertThat(
@@ -95,4 +115,44 @@ class HostnamesTest {
95
115
}
96
116
97
117
private fun decodeIpv6 (input : String ): ByteArray? = decodeIpv6(input, 0 , input.length)
118
+
119
+ @Test
120
+ fun testToCanonicalHost () {
121
+ // IPv4
122
+ assertThat(" 127.0.0.1" .toCanonicalHost()).isEqualTo(" 127.0.0.1" )
123
+ assertThat(" 1.2.3.4" .toCanonicalHost()).isEqualTo(" 1.2.3.4" )
124
+
125
+ // IPv6
126
+ assertThat(" ::1" .toCanonicalHost()).isEqualTo(" ::1" )
127
+ assertThat(" 2001:db8::1" .toCanonicalHost()).isEqualTo(" 2001:db8::1" )
128
+ assertThat(" ::ffff:192.168.0.1" .toCanonicalHost()).isEqualTo(" 192.168.0.1" )
129
+ assertThat(
130
+ " FEDC:BA98:7654:3210:FEDC:BA98:7654:3210" .toCanonicalHost(),
131
+ ).isEqualTo(
132
+ " fedc:ba98:7654:3210:fedc:ba98:7654:3210" ,
133
+ )
134
+
135
+ assertThat(
136
+ " 1080:0:0:0:8:800:200C:417A" .toCanonicalHost(),
137
+ ).isEqualTo(" 1080::8:800:200c:417a" )
138
+
139
+ assertThat(" 1080::8:800:200C:417A" .toCanonicalHost()).isEqualTo(" 1080::8:800:200c:417a" )
140
+ assertThat(" FF01::101" .toCanonicalHost()).isEqualTo(" ff01::101" )
141
+ assertThat(
142
+ " 0:0:0:0:0:FFFF:129.144.52.38" .toCanonicalHost(),
143
+ ).isEqualTo(" 129.144.52.38" )
144
+
145
+ assertThat(" ::FFFF:129.144.52.38" .toCanonicalHost()).isEqualTo(" 129.144.52.38" )
146
+
147
+ // Hostnames
148
+ assertThat(" WwW.GoOgLe.cOm" .toCanonicalHost()).isEqualTo(" www.google.com" )
149
+ assertThat(" localhost" .toCanonicalHost()).isEqualTo(" localhost" )
150
+ assertThat(" ☃.net" .toCanonicalHost()).isEqualTo(" xn--n3h.net" )
151
+
152
+ // IPv4 Compatible or Mapped addresses
153
+ assertThat(" ::192.168.0.1" .toCanonicalHost()).isEqualTo(" ::c0a8:1" )
154
+ assertThat(" ::FFFF:192.168.0.1" .toCanonicalHost()).isEqualTo(" 192.168.0.1" )
155
+ assertThat(" 0:0:0:0:0:0:13.1.68.3" .toCanonicalHost()).isEqualTo(" ::d01:4403" )
156
+ assertThat(" ::13.1.68.3" .toCanonicalHost()).isEqualTo(" ::d01:4403" )
157
+ }
98
158
}
0 commit comments