blob: c2171ce1707ca3720eb32ca8c474c4bd2596c9bd [file] [log] [blame]
Thomas Vachuska24c849c2014-10-27 09:53:05 -07001/*
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07002 * Copyright 2014 Open Networking Laboratory
Thomas Vachuska24c849c2014-10-27 09:53:05 -07003 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
Thomas Vachuska24c849c2014-10-27 09:53:05 -07007 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07008 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
Thomas Vachuska24c849c2014-10-27 09:53:05 -070015 */
Ayaka Koshibe16698a32014-09-13 22:19:02 -070016package org.onlab.packet;
17
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080018import com.google.common.testing.EqualsTester;
Pavlin Radoslavovf182f012014-11-04 15:03:18 -080019import org.junit.Ignore;
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080020import org.junit.Test;
21
22import static org.hamcrest.Matchers.equalTo;
23import static org.hamcrest.Matchers.is;
24import static org.junit.Assert.assertThat;
Jonathan Hartb7a2ac32014-09-19 10:42:27 -070025import static org.junit.Assert.assertFalse;
Ayaka Koshibe40e7fec2014-09-16 22:32:19 -070026import static org.junit.Assert.assertTrue;
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080027import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
Ayaka Koshibe16698a32014-09-13 22:19:02 -070028
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080029/**
30 * Tests for class {@link IpPrefix}.
31 */
Ayaka Koshibe1d56fe42014-09-19 16:51:58 -070032public class IpPrefixTest {
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080033 /**
34 * Tests the immutability of {@link IpPrefix}.
35 */
Pavlin Radoslavovf182f012014-11-04 15:03:18 -080036 @Ignore("The class is not pure immutable, because it is not 'final'")
Ayaka Koshibe16698a32014-09-13 22:19:02 -070037 @Test
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080038 public void testImmutable() {
39 assertThatClassIsImmutable(IpPrefix.class);
Ayaka Koshibe16698a32014-09-13 22:19:02 -070040 }
41
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080042 /**
43 * Tests the maximum mask length.
44 */
Ayaka Koshibe16698a32014-09-13 22:19:02 -070045 @Test
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080046 public void testMaxMaskLength() {
47 assertThat(IpPrefix.MAX_INET_MASK_LENGTH, is(32));
48 assertThat(IpPrefix.MAX_INET6_MASK_LENGTH, is(128));
Ayaka Koshibe40e7fec2014-09-16 22:32:19 -070049 }
50
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080051 /**
52 * Tests returning the IP version of the prefix.
53 */
Ayaka Koshibe40e7fec2014-09-16 22:32:19 -070054 @Test
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080055 public void testVersion() {
56 IpPrefix ipPrefix;
57
58 // IPv4
59 ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
60 assertThat(ipPrefix.version(), is(IpAddress.Version.INET));
61
62 // IPv6
63 ipPrefix = IpPrefix.valueOf("::/0");
64 assertThat(ipPrefix.version(), is(IpAddress.Version.INET6));
Ayaka Koshibe16698a32014-09-13 22:19:02 -070065 }
Jonathan Hartb7a2ac32014-09-19 10:42:27 -070066
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080067 /**
68 * Tests returning the IP address value and IP address prefix length of
69 * an IPv4 prefix.
70 */
Jonathan Hartb7a2ac32014-09-19 10:42:27 -070071 @Test
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080072 public void testAddressAndPrefixLengthIPv4() {
73 IpPrefix ipPrefix;
Jonathan Hartb7a2ac32014-09-19 10:42:27 -070074
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080075 ipPrefix = IpPrefix.valueOf("1.2.3.0/24");
76 assertThat(ipPrefix.address(), equalTo(IpAddress.valueOf("1.2.3.0")));
77 assertThat(ipPrefix.prefixLength(), is(24));
Jonathan Hartb7a2ac32014-09-19 10:42:27 -070078
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080079 ipPrefix = IpPrefix.valueOf("1.2.3.4/24");
80 assertThat(ipPrefix.address(), equalTo(IpAddress.valueOf("1.2.3.0")));
81 assertThat(ipPrefix.prefixLength(), is(24));
Jonathan Hartb7a2ac32014-09-19 10:42:27 -070082
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080083 ipPrefix = IpPrefix.valueOf("1.2.3.4/32");
84 assertThat(ipPrefix.address(), equalTo(IpAddress.valueOf("1.2.3.4")));
85 assertThat(ipPrefix.prefixLength(), is(32));
Jonathan Hartb7a2ac32014-09-19 10:42:27 -070086
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080087 ipPrefix = IpPrefix.valueOf("1.2.3.5/32");
88 assertThat(ipPrefix.address(), equalTo(IpAddress.valueOf("1.2.3.5")));
89 assertThat(ipPrefix.prefixLength(), is(32));
90
91 ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
92 assertThat(ipPrefix.address(), equalTo(IpAddress.valueOf("0.0.0.0")));
93 assertThat(ipPrefix.prefixLength(), is(0));
94
95 ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
96 assertThat(ipPrefix.address(),
97 equalTo(IpAddress.valueOf("255.255.255.255")));
98 assertThat(ipPrefix.prefixLength(), is(32));
Jonathan Hartb7a2ac32014-09-19 10:42:27 -070099 }
Jonathan Hart70da5122014-10-01 16:37:42 -0700100
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -0800101 /**
102 * Tests returning the IP address value and IP address prefix length of
103 * an IPv6 prefix.
104 */
Jonathan Hart70da5122014-10-01 16:37:42 -0700105 @Test
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -0800106 public void testAddressAndPrefixLengthIPv6() {
107 IpPrefix ipPrefix;
Jonathan Hart70da5122014-10-01 16:37:42 -0700108
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -0800109 ipPrefix = IpPrefix.valueOf("1100::/8");
110 assertThat(ipPrefix.address(), equalTo(IpAddress.valueOf("1100::")));
111 assertThat(ipPrefix.prefixLength(), is(8));
Jonathan Hart70da5122014-10-01 16:37:42 -0700112
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -0800113 ipPrefix =
114 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8885/8");
115 assertThat(ipPrefix.address(), equalTo(IpAddress.valueOf("1100::")));
116 assertThat(ipPrefix.prefixLength(), is(8));
Jonathan Hart70da5122014-10-01 16:37:42 -0700117
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -0800118 ipPrefix =
119 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8800/120");
120 assertThat(ipPrefix.address(),
121 equalTo(IpAddress.valueOf("1111:2222:3333:4444:5555:6666:7777:8800")));
122 assertThat(ipPrefix.prefixLength(), is(120));
Jonathan Hartdbdbdbb2014-10-06 18:35:30 -0700123
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -0800124 ipPrefix =
125 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8885/128");
126 assertThat(ipPrefix.address(),
127 equalTo(IpAddress.valueOf("1111:2222:3333:4444:5555:6666:7777:8885")));
128 assertThat(ipPrefix.prefixLength(), is(128));
Jonathan Hartdbdbdbb2014-10-06 18:35:30 -0700129
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -0800130 ipPrefix = IpPrefix.valueOf("::/0");
131 assertThat(ipPrefix.address(), equalTo(IpAddress.valueOf("::")));
132 assertThat(ipPrefix.prefixLength(), is(0));
133
134 ipPrefix =
135 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
136 assertThat(ipPrefix.address(),
137 equalTo(IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
138 assertThat(ipPrefix.prefixLength(), is(128));
139
140 ipPrefix =
141 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8885/64");
142 assertThat(ipPrefix.address(),
143 equalTo(IpAddress.valueOf("1111:2222:3333:4444::")));
144 assertThat(ipPrefix.prefixLength(), is(64));
145 }
146
147 /**
148 * Tests valueOf() converter for IPv4 integer value.
149 */
150 @Test
151 public void testValueOfForIntegerIPv4() {
152 IpPrefix ipPrefix;
153
154 ipPrefix = IpPrefix.valueOf(0x01020304, 24);
155 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
156
157 ipPrefix = IpPrefix.valueOf(0x01020304, 32);
158 assertThat(ipPrefix.toString(), is("1.2.3.4/32"));
159
160 ipPrefix = IpPrefix.valueOf(0x01020305, 32);
161 assertThat(ipPrefix.toString(), is("1.2.3.5/32"));
162
163 ipPrefix = IpPrefix.valueOf(0, 0);
164 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
165
166 ipPrefix = IpPrefix.valueOf(0, 32);
167 assertThat(ipPrefix.toString(), is("0.0.0.0/32"));
168
169 ipPrefix = IpPrefix.valueOf(0xffffffff, 0);
170 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
171
172 ipPrefix = IpPrefix.valueOf(0xffffffff, 16);
173 assertThat(ipPrefix.toString(), is("255.255.0.0/16"));
174
175 ipPrefix = IpPrefix.valueOf(0xffffffff, 32);
176 assertThat(ipPrefix.toString(), is("255.255.255.255/32"));
177 }
178
179 /**
180 * Tests invalid valueOf() converter for IPv4 integer value and
181 * negative prefix length.
182 */
183 @Test(expected = IllegalArgumentException.class)
184 public void testInvalidValueOfIntegerNegativePrefixLengthIPv4() {
185 IpPrefix ipPrefix;
186
187 ipPrefix = IpPrefix.valueOf(0x01020304, -1);
188 }
189
190 /**
191 * Tests invalid valueOf() converter for IPv4 integer value and
192 * too long prefix length.
193 */
194 @Test(expected = IllegalArgumentException.class)
195 public void testInvalidValueOfIntegerTooLongPrefixLengthIPv4() {
196 IpPrefix ipPrefix;
197
198 ipPrefix = IpPrefix.valueOf(0x01020304, 33);
199 }
200
201 /**
202 * Tests valueOf() converter for IPv4 byte array.
203 */
204 @Test
205 public void testValueOfByteArrayIPv4() {
206 IpPrefix ipPrefix;
207 byte[] value;
208
209 value = new byte[] {1, 2, 3, 4};
210 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 24);
211 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
212
213 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 32);
214 assertThat(ipPrefix.toString(), is("1.2.3.4/32"));
215
216 value = new byte[] {1, 2, 3, 5};
217 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 32);
218 assertThat(ipPrefix.toString(), is("1.2.3.5/32"));
219
220 value = new byte[] {0, 0, 0, 0};
221 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 0);
222 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
223
224 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 32);
225 assertThat(ipPrefix.toString(), is("0.0.0.0/32"));
226
227 value = new byte[] {(byte) 0xff, (byte) 0xff,
228 (byte) 0xff, (byte) 0xff};
229 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 0);
230 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
231
232 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 16);
233 assertThat(ipPrefix.toString(), is("255.255.0.0/16"));
234
235 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 32);
236 assertThat(ipPrefix.toString(), is("255.255.255.255/32"));
237 }
238
239 /**
240 * Tests valueOf() converter for IPv6 byte array.
241 */
242 @Test
243 public void testValueOfByteArrayIPv6() {
244 IpPrefix ipPrefix;
245 byte[] value;
246
247 value = new byte[] {0x11, 0x11, 0x22, 0x22,
248 0x33, 0x33, 0x44, 0x44,
249 0x55, 0x55, 0x66, 0x66,
250 0x77, 0x77, (byte) 0x88, (byte) 0x88};
251 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 120);
252 assertThat(ipPrefix.toString(),
253 is("1111:2222:3333:4444:5555:6666:7777:8800/120"));
254
255 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 128);
256 assertThat(ipPrefix.toString(),
257 is("1111:2222:3333:4444:5555:6666:7777:8888/128"));
258
259 value = new byte[] {0x00, 0x00, 0x00, 0x00,
260 0x00, 0x00, 0x00, 0x00,
261 0x00, 0x00, 0x00, 0x00,
262 0x00, 0x00, 0x00, 0x00};
263 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 0);
264 assertThat(ipPrefix.toString(), is("::/0"));
265
266 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 128);
267 assertThat(ipPrefix.toString(), is("::/128"));
268
269 value = new byte[] {(byte) 0xff, (byte) 0xff,
270 (byte) 0xff, (byte) 0xff,
271 (byte) 0xff, (byte) 0xff,
272 (byte) 0xff, (byte) 0xff,
273 (byte) 0xff, (byte) 0xff,
274 (byte) 0xff, (byte) 0xff,
275 (byte) 0xff, (byte) 0xff,
276 (byte) 0xff, (byte) 0xff};
277 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 0);
278 assertThat(ipPrefix.toString(), is("::/0"));
279
280 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 64);
281 assertThat(ipPrefix.toString(), is("ffff:ffff:ffff:ffff::/64"));
282
283 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 128);
284 assertThat(ipPrefix.toString(),
285 is("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"));
286 }
287
288 /**
289 * Tests invalid valueOf() converter for a null array for IPv4.
290 */
291 @Test(expected = NullPointerException.class)
292 public void testInvalidValueOfNullArrayIPv4() {
293 IpPrefix ipPrefix;
294 byte[] value;
295
296 value = null;
297 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 24);
298 }
299
300 /**
301 * Tests invalid valueOf() converter for a null array for IPv6.
302 */
303 @Test(expected = NullPointerException.class)
304 public void testInvalidValueOfNullArrayIPv6() {
305 IpPrefix ipPrefix;
306 byte[] value;
307
308 value = null;
309 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 120);
310 }
311
312 /**
313 * Tests invalid valueOf() converter for a short array for IPv4.
314 */
315 @Test(expected = IllegalArgumentException.class)
316 public void testInvalidValueOfShortArrayIPv4() {
317 IpPrefix ipPrefix;
318 byte[] value;
319
320 value = new byte[] {1, 2, 3};
321 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 24);
322 }
323
324 /**
325 * Tests invalid valueOf() converter for a short array for IPv6.
326 */
327 @Test(expected = IllegalArgumentException.class)
328 public void testInvalidValueOfShortArrayIPv6() {
329 IpPrefix ipPrefix;
330 byte[] value;
331
332 value = new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
333 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 120);
334 }
335
336 /**
337 * Tests invalid valueOf() converter for IPv4 byte array and
338 * negative prefix length.
339 */
340 @Test(expected = IllegalArgumentException.class)
341 public void testInvalidValueOfByteArrayNegativePrefixLengthIPv4() {
342 IpPrefix ipPrefix;
343 byte[] value;
344
345 value = new byte[] {1, 2, 3, 4};
346 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, -1);
347 }
348
349 /**
350 * Tests invalid valueOf() converter for IPv6 byte array and
351 * negative prefix length.
352 */
353 @Test(expected = IllegalArgumentException.class)
354 public void testInvalidValueOfByteArrayNegativePrefixLengthIPv6() {
355 IpPrefix ipPrefix;
356 byte[] value;
357
358 value = new byte[] {0x11, 0x11, 0x22, 0x22,
359 0x33, 0x33, 0x44, 0x44,
360 0x55, 0x55, 0x66, 0x66,
361 0x77, 0x77, (byte) 0x88, (byte) 0x88};
362 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, -1);
363 }
364
365 /**
366 * Tests invalid valueOf() converter for IPv4 byte array and
367 * too long prefix length.
368 */
369 @Test(expected = IllegalArgumentException.class)
370 public void testInvalidValueOfByteArrayTooLongPrefixLengthIPv4() {
371 IpPrefix ipPrefix;
372 byte[] value;
373
374 value = new byte[] {1, 2, 3, 4};
375 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 33);
376 }
377
378 /**
379 * Tests invalid valueOf() converter for IPv6 byte array and
380 * too long prefix length.
381 */
382 @Test(expected = IllegalArgumentException.class)
383 public void testInvalidValueOfByteArrayTooLongPrefixLengthIPv6() {
384 IpPrefix ipPrefix;
385 byte[] value;
386
387 value = new byte[] {0x11, 0x11, 0x22, 0x22,
388 0x33, 0x33, 0x44, 0x44,
389 0x55, 0x55, 0x66, 0x66,
390 0x77, 0x77, (byte) 0x88, (byte) 0x88};
391 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 129);
392 }
393
394 /**
395 * Tests valueOf() converter for IPv4 address.
396 */
397 @Test
398 public void testValueOfAddressIPv4() {
399 IpAddress ipAddress;
400 IpPrefix ipPrefix;
401
402 ipAddress = IpAddress.valueOf("1.2.3.4");
403 ipPrefix = IpPrefix.valueOf(ipAddress, 24);
404 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
405
406 ipPrefix = IpPrefix.valueOf(ipAddress, 32);
407 assertThat(ipPrefix.toString(), is("1.2.3.4/32"));
408
409 ipAddress = IpAddress.valueOf("1.2.3.5");
410 ipPrefix = IpPrefix.valueOf(ipAddress, 32);
411 assertThat(ipPrefix.toString(), is("1.2.3.5/32"));
412
413 ipAddress = IpAddress.valueOf("0.0.0.0");
414 ipPrefix = IpPrefix.valueOf(ipAddress, 0);
415 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
416
417 ipPrefix = IpPrefix.valueOf(ipAddress, 32);
418 assertThat(ipPrefix.toString(), is("0.0.0.0/32"));
419
420 ipAddress = IpAddress.valueOf("255.255.255.255");
421 ipPrefix = IpPrefix.valueOf(ipAddress, 0);
422 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
423
424 ipPrefix = IpPrefix.valueOf(ipAddress, 16);
425 assertThat(ipPrefix.toString(), is("255.255.0.0/16"));
426
427 ipPrefix = IpPrefix.valueOf(ipAddress, 32);
428 assertThat(ipPrefix.toString(), is("255.255.255.255/32"));
429 }
430
431 /**
432 * Tests valueOf() converter for IPv6 address.
433 */
434 @Test
435 public void testValueOfAddressIPv6() {
436 IpAddress ipAddress;
437 IpPrefix ipPrefix;
438
439 ipAddress =
440 IpAddress.valueOf("1111:2222:3333:4444:5555:6666:7777:8888");
441 ipPrefix = IpPrefix.valueOf(ipAddress, 120);
442 assertThat(ipPrefix.toString(),
443 is("1111:2222:3333:4444:5555:6666:7777:8800/120"));
444
445 ipPrefix = IpPrefix.valueOf(ipAddress, 128);
446 assertThat(ipPrefix.toString(),
447 is("1111:2222:3333:4444:5555:6666:7777:8888/128"));
448
449 ipAddress = IpAddress.valueOf("::");
450 ipPrefix = IpPrefix.valueOf(ipAddress, 0);
451 assertThat(ipPrefix.toString(), is("::/0"));
452
453 ipPrefix = IpPrefix.valueOf(ipAddress, 128);
454 assertThat(ipPrefix.toString(), is("::/128"));
455
456 ipAddress =
457 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
458 ipPrefix = IpPrefix.valueOf(ipAddress, 0);
459 assertThat(ipPrefix.toString(), is("::/0"));
460
461 ipPrefix = IpPrefix.valueOf(ipAddress, 64);
462 assertThat(ipPrefix.toString(), is("ffff:ffff:ffff:ffff::/64"));
463
464 ipPrefix = IpPrefix.valueOf(ipAddress, 128);
465 assertThat(ipPrefix.toString(),
466 is("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"));
467 }
468
469 /**
470 * Tests invalid valueOf() converter for a null IP address.
471 */
472 @Test(expected = NullPointerException.class)
473 public void testInvalidValueOfNullAddress() {
474 IpAddress ipAddress;
475 IpPrefix ipPrefix;
476
477 ipAddress = null;
478 ipPrefix = IpPrefix.valueOf(ipAddress, 24);
479 }
480
481 /**
482 * Tests invalid valueOf() converter for IPv4 address and
483 * negative prefix length.
484 */
485 @Test(expected = IllegalArgumentException.class)
486 public void testInvalidValueOfAddressNegativePrefixLengthIPv4() {
487 IpAddress ipAddress;
488 IpPrefix ipPrefix;
489
490 ipAddress = IpAddress.valueOf("1.2.3.4");
491 ipPrefix = IpPrefix.valueOf(ipAddress, -1);
492 }
493
494 /**
495 * Tests invalid valueOf() converter for IPv6 address and
496 * negative prefix length.
497 */
498 @Test(expected = IllegalArgumentException.class)
499 public void testInvalidValueOfAddressNegativePrefixLengthIPv6() {
500 IpAddress ipAddress;
501 IpPrefix ipPrefix;
502
503 ipAddress =
504 IpAddress.valueOf("1111:2222:3333:4444:5555:6666:7777:8888");
505 ipPrefix = IpPrefix.valueOf(ipAddress, -1);
506 }
507
508 /**
509 * Tests invalid valueOf() converter for IPv4 address and
510 * too long prefix length.
511 */
512 @Test(expected = IllegalArgumentException.class)
513 public void testInvalidValueOfAddressTooLongPrefixLengthIPv4() {
514 IpAddress ipAddress;
515 IpPrefix ipPrefix;
516
517 ipAddress = IpAddress.valueOf("1.2.3.4");
518 ipPrefix = IpPrefix.valueOf(ipAddress, 33);
519 }
520
521 /**
522 * Tests invalid valueOf() converter for IPv6 address and
523 * too long prefix length.
524 */
525 @Test(expected = IllegalArgumentException.class)
526 public void testInvalidValueOfAddressTooLongPrefixLengthIPv6() {
527 IpAddress ipAddress;
528 IpPrefix ipPrefix;
529
530 ipAddress =
531 IpAddress.valueOf("1111:2222:3333:4444:5555:6666:7777:8888");
532 ipPrefix = IpPrefix.valueOf(ipAddress, 129);
533 }
534
535 /**
536 * Tests valueOf() converter for IPv4 string.
537 */
538 @Test
539 public void testValueOfStringIPv4() {
540 IpPrefix ipPrefix;
541
542 ipPrefix = IpPrefix.valueOf("1.2.3.4/24");
543 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
544
545 ipPrefix = IpPrefix.valueOf("1.2.3.4/32");
546 assertThat(ipPrefix.toString(), is("1.2.3.4/32"));
547
548 ipPrefix = IpPrefix.valueOf("1.2.3.5/32");
549 assertThat(ipPrefix.toString(), is("1.2.3.5/32"));
550
551 ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
552 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
553
554 ipPrefix = IpPrefix.valueOf("0.0.0.0/32");
555 assertThat(ipPrefix.toString(), is("0.0.0.0/32"));
556
557 ipPrefix = IpPrefix.valueOf("255.255.255.255/0");
558 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
559
560 ipPrefix = IpPrefix.valueOf("255.255.255.255/16");
561 assertThat(ipPrefix.toString(), is("255.255.0.0/16"));
562
563 ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
564 assertThat(ipPrefix.toString(), is("255.255.255.255/32"));
565 }
566
567 /**
568 * Tests valueOf() converter for IPv6 string.
569 */
570 @Test
571 public void testValueOfStringIPv6() {
572 IpPrefix ipPrefix;
573
574 ipPrefix =
575 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8888/120");
576 assertThat(ipPrefix.toString(),
577 is("1111:2222:3333:4444:5555:6666:7777:8800/120"));
578
579 ipPrefix =
580 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8888/128");
581 assertThat(ipPrefix.toString(),
582 is("1111:2222:3333:4444:5555:6666:7777:8888/128"));
583
584 ipPrefix = IpPrefix.valueOf("::/0");
585 assertThat(ipPrefix.toString(), is("::/0"));
586
587 ipPrefix = IpPrefix.valueOf("::/128");
588 assertThat(ipPrefix.toString(), is("::/128"));
589
590 ipPrefix =
591 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/0");
592 assertThat(ipPrefix.toString(), is("::/0"));
593
594 ipPrefix =
595 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/64");
596 assertThat(ipPrefix.toString(), is("ffff:ffff:ffff:ffff::/64"));
597
598 ipPrefix =
599 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
600 assertThat(ipPrefix.toString(),
601 is("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"));
602 }
603
604 /**
605 * Tests invalid valueOf() converter for a null string.
606 */
607 @Test(expected = NullPointerException.class)
608 public void testInvalidValueOfNullString() {
609 IpPrefix ipPrefix;
610 String fromString;
611
612 fromString = null;
613 ipPrefix = IpPrefix.valueOf(fromString);
614 }
615
616 /**
617 * Tests invalid valueOf() converter for an empty string.
618 */
619 @Test(expected = IllegalArgumentException.class)
620 public void testInvalidValueOfEmptyString() {
621 IpPrefix ipPrefix;
622 String fromString;
623
624 fromString = "";
625 ipPrefix = IpPrefix.valueOf(fromString);
626 }
627
628 /**
629 * Tests invalid valueOf() converter for an incorrect string.
630 */
631 @Test(expected = IllegalArgumentException.class)
632 public void testInvalidValueOfIncorrectString() {
633 IpPrefix ipPrefix;
634 String fromString;
635
636 fromString = "NoSuchIpPrefix";
637 ipPrefix = IpPrefix.valueOf(fromString);
638 }
639
640 /**
641 * Tests invalid valueOf() converter for IPv4 string and
642 * negative prefix length.
643 */
644 @Test(expected = IllegalArgumentException.class)
645 public void testInvalidValueOfStringNegativePrefixLengthIPv4() {
646 IpPrefix ipPrefix;
647
648 ipPrefix = IpPrefix.valueOf("1.2.3.4/-1");
649 }
650
651 /**
652 * Tests invalid valueOf() converter for IPv6 string and
653 * negative prefix length.
654 */
655 @Test(expected = IllegalArgumentException.class)
656 public void testInvalidValueOfStringNegativePrefixLengthIPv6() {
657 IpPrefix ipPrefix;
658
659 ipPrefix =
660 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8888/-1");
661 }
662
663 /**
664 * Tests invalid valueOf() converter for IPv4 string and
665 * too long prefix length.
666 */
667 @Test(expected = IllegalArgumentException.class)
668 public void testInvalidValueOfStringTooLongPrefixLengthIPv4() {
669 IpPrefix ipPrefix;
670
671 ipPrefix = IpPrefix.valueOf("1.2.3.4/33");
672 }
673
674 /**
675 * Tests invalid valueOf() converter for IPv6 string and
676 * too long prefix length.
677 */
678 @Test(expected = IllegalArgumentException.class)
679 public void testInvalidValueOfStringTooLongPrefixLengthIPv6() {
680 IpPrefix ipPrefix;
681
682 ipPrefix =
683 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8888/129");
684 }
685
686 /**
687 * Tests IP prefix contains another IP prefix for IPv4.
688 */
689 @Test
690 public void testContainsIpPrefixIPv4() {
691 IpPrefix ipPrefix;
692
693 ipPrefix = IpPrefix.valueOf("1.2.0.0/24");
694 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/24")));
695 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/32")));
696 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.4/32")));
697 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/16")));
698 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.3.0.0/24")));
699 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/16")));
700 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/0")));
701 assertFalse(ipPrefix.contains(IpPrefix.valueOf("255.255.255.255/32")));
702
703 ipPrefix = IpPrefix.valueOf("1.2.0.0/32");
704 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/24")));
705 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/32")));
706 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.4/32")));
707 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/16")));
708 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.3.0.0/24")));
709 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/16")));
710 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/0")));
711 assertFalse(ipPrefix.contains(IpPrefix.valueOf("255.255.255.255/32")));
712
713 ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
714 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/24")));
715 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/32")));
716 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.4/32")));
717 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/16")));
718 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.3.0.0/24")));
719 assertTrue(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/16")));
720 assertTrue(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/0")));
721 assertTrue(ipPrefix.contains(IpPrefix.valueOf("255.255.255.255/32")));
722
723 ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
724 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/24")));
725 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/32")));
726 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.4/32")));
727 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/16")));
728 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.3.0.0/24")));
729 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/16")));
730 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/0")));
731 assertTrue(ipPrefix.contains(IpPrefix.valueOf("255.255.255.255/32")));
732 }
733
734 /**
735 * Tests IP prefix contains another IP prefix for IPv6.
736 */
737 @Test
738 public void testContainsIpPrefixIPv6() {
739 IpPrefix ipPrefix;
740
741 ipPrefix = IpPrefix.valueOf("1111:2222:3333:4444::/120");
742 assertTrue(ipPrefix.contains(
743 IpPrefix.valueOf("1111:2222:3333:4444::/120")));
744 assertTrue(ipPrefix.contains(
745 IpPrefix.valueOf("1111:2222:3333:4444::/128")));
746 assertTrue(ipPrefix.contains(
747 IpPrefix.valueOf("1111:2222:3333:4444::1/128")));
748 assertFalse(ipPrefix.contains(
749 IpPrefix.valueOf("1111:2222:3333:4444::/64")));
750 assertFalse(ipPrefix.contains(
751 IpPrefix.valueOf("1111:2222:3333:4445::/120")));
752 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/64")));
753 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/0")));
754 assertFalse(ipPrefix.contains(
755 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128")));
756
757 ipPrefix = IpPrefix.valueOf("1111:2222:3333:4444::/128");
758 assertFalse(ipPrefix.contains(
759 IpPrefix.valueOf("1111:2222:3333:4444::/120")));
760 assertTrue(ipPrefix.contains(
761 IpPrefix.valueOf("1111:2222:3333:4444::/128")));
762 assertFalse(ipPrefix.contains(
763 IpPrefix.valueOf("1111:2222:3333:4444::1/128")));
764 assertFalse(ipPrefix.contains(
765 IpPrefix.valueOf("1111:2222:3333:4444::/64")));
766 assertFalse(ipPrefix.contains(
767 IpPrefix.valueOf("1111:2222:3333:4445::/120")));
768 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/64")));
769 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/0")));
770 assertFalse(ipPrefix.contains(
771 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128")));
772
773 ipPrefix = IpPrefix.valueOf("::/0");
774 assertTrue(ipPrefix.contains(
775 IpPrefix.valueOf("1111:2222:3333:4444::/120")));
776 assertTrue(ipPrefix.contains(
777 IpPrefix.valueOf("1111:2222:3333:4444::/128")));
778 assertTrue(ipPrefix.contains(
779 IpPrefix.valueOf("1111:2222:3333:4444::1/128")));
780 assertTrue(ipPrefix.contains(
781 IpPrefix.valueOf("1111:2222:3333:4444::/64")));
782 assertTrue(ipPrefix.contains(
783 IpPrefix.valueOf("1111:2222:3333:4445::/120")));
784 assertTrue(ipPrefix.contains(IpPrefix.valueOf("::/64")));
785 assertTrue(ipPrefix.contains(IpPrefix.valueOf("::/0")));
786 assertTrue(ipPrefix.contains(
787 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128")));
788
789 ipPrefix =
790 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
791 assertFalse(ipPrefix.contains(
792 IpPrefix.valueOf("1111:2222:3333:4444::/120")));
793 assertFalse(ipPrefix.contains(
794 IpPrefix.valueOf("1111:2222:3333:4444::/128")));
795 assertFalse(ipPrefix.contains(
796 IpPrefix.valueOf("1111:2222:3333:4444::1/128")));
797 assertFalse(ipPrefix.contains(
798 IpPrefix.valueOf("1111:2222:3333:4444::/64")));
799 assertFalse(ipPrefix.contains(
800 IpPrefix.valueOf("1111:2222:3333:4445::/120")));
801 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/64")));
802 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/0")));
803 assertTrue(ipPrefix.contains(
804 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128")));
805 }
806
807 /**
808 * Tests IP prefix contains IP address for IPv4.
809 */
810 @Test
811 public void testContainsIpAddressIPv4() {
812 IpPrefix ipPrefix;
813
814 ipPrefix = IpPrefix.valueOf("1.2.0.0/24");
815 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.2.0.0")));
816 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.2.0.4")));
817 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.3.0.0")));
818 assertFalse(ipPrefix.contains(IpAddress.valueOf("0.0.0.0")));
819 assertFalse(ipPrefix.contains(IpAddress.valueOf("255.255.255.255")));
820
821 ipPrefix = IpPrefix.valueOf("1.2.0.0/32");
822 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.2.0.0")));
823 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.2.0.4")));
824 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.3.0.0")));
825 assertFalse(ipPrefix.contains(IpAddress.valueOf("0.0.0.0")));
826 assertFalse(ipPrefix.contains(IpAddress.valueOf("255.255.255.255")));
827
828 ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
829 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.2.0.0")));
830 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.2.0.4")));
831 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.3.0.0")));
832 assertTrue(ipPrefix.contains(IpAddress.valueOf("0.0.0.0")));
833 assertTrue(ipPrefix.contains(IpAddress.valueOf("255.255.255.255")));
834
835 ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
836 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.2.0.0")));
837 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.2.0.4")));
838 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.3.0.0")));
839 assertFalse(ipPrefix.contains(IpAddress.valueOf("0.0.0.0")));
840 assertTrue(ipPrefix.contains(IpAddress.valueOf("255.255.255.255")));
841 }
842
843 /**
844 * Tests IP prefix contains IP address for IPv6.
845 */
846 @Test
847 public void testContainsIpAddressIPv6() {
848 IpPrefix ipPrefix;
849
850 ipPrefix = IpPrefix.valueOf("1111:2222:3333:4444::/120");
851 assertTrue(ipPrefix.contains(
852 IpAddress.valueOf("1111:2222:3333:4444::")));
853 assertTrue(ipPrefix.contains(
854 IpAddress.valueOf("1111:2222:3333:4444::1")));
855 assertFalse(ipPrefix.contains(
856 IpAddress.valueOf("1111:2222:3333:4445::")));
857 assertFalse(ipPrefix.contains(IpAddress.valueOf("::")));
858 assertFalse(ipPrefix.contains(
859 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
860
861 ipPrefix = IpPrefix.valueOf("1111:2222:3333:4444::/128");
862 assertTrue(ipPrefix.contains(
863 IpAddress.valueOf("1111:2222:3333:4444::")));
864 assertFalse(ipPrefix.contains(
865 IpAddress.valueOf("1111:2222:3333:4444::1")));
866 assertFalse(ipPrefix.contains(
867 IpAddress.valueOf("1111:2222:3333:4445::")));
868 assertFalse(ipPrefix.contains(IpAddress.valueOf("::")));
869 assertFalse(ipPrefix.contains(
870 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
871
872 ipPrefix = IpPrefix.valueOf("::/0");
873 assertTrue(ipPrefix.contains(
874 IpAddress.valueOf("1111:2222:3333:4444::")));
875 assertTrue(ipPrefix.contains(
876 IpAddress.valueOf("1111:2222:3333:4444::1")));
877 assertTrue(ipPrefix.contains(
878 IpAddress.valueOf("1111:2222:3333:4445::")));
879 assertTrue(ipPrefix.contains(IpAddress.valueOf("::")));
880 assertTrue(ipPrefix.contains(
881 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
882
883 ipPrefix =
884 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
885 assertFalse(ipPrefix.contains(
886 IpAddress.valueOf("1111:2222:3333:4444::")));
887 assertFalse(ipPrefix.contains(
888 IpAddress.valueOf("1111:2222:3333:4444::1")));
889 assertFalse(ipPrefix.contains(
890 IpAddress.valueOf("1111:2222:3333:4445::")));
891 assertFalse(ipPrefix.contains(IpAddress.valueOf("::")));
892 assertTrue(ipPrefix.contains(
893 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
894 }
895
896 /**
897 * Tests equality of {@link IpPrefix} for IPv4.
898 */
899 @Test
900 public void testEqualityIPv4() {
901 new EqualsTester()
902 .addEqualityGroup(IpPrefix.valueOf("1.2.0.0/24"),
903 IpPrefix.valueOf("1.2.0.0/24"),
904 IpPrefix.valueOf("1.2.0.4/24"))
905 .addEqualityGroup(IpPrefix.valueOf("1.2.0.0/16"),
906 IpPrefix.valueOf("1.2.0.0/16"))
907 .addEqualityGroup(IpPrefix.valueOf("1.2.0.0/32"),
908 IpPrefix.valueOf("1.2.0.0/32"))
909 .addEqualityGroup(IpPrefix.valueOf("1.3.0.0/24"),
910 IpPrefix.valueOf("1.3.0.0/24"))
911 .addEqualityGroup(IpPrefix.valueOf("0.0.0.0/0"),
912 IpPrefix.valueOf("0.0.0.0/0"))
913 .addEqualityGroup(IpPrefix.valueOf("255.255.255.255/32"),
914 IpPrefix.valueOf("255.255.255.255/32"))
915 .testEquals();
916 }
917
918 /**
919 * Tests equality of {@link IpPrefix} for IPv6.
920 */
921 @Test
922 public void testEqualityIPv6() {
923 new EqualsTester()
924 .addEqualityGroup(
925 IpPrefix.valueOf("1111:2222:3333:4444::/120"),
926 IpPrefix.valueOf("1111:2222:3333:4444::1/120"),
927 IpPrefix.valueOf("1111:2222:3333:4444::/120"))
928 .addEqualityGroup(
929 IpPrefix.valueOf("1111:2222:3333:4444::/64"),
930 IpPrefix.valueOf("1111:2222:3333:4444::/64"))
931 .addEqualityGroup(
932 IpPrefix.valueOf("1111:2222:3333:4444::/128"),
933 IpPrefix.valueOf("1111:2222:3333:4444::/128"))
934 .addEqualityGroup(
935 IpPrefix.valueOf("1111:2222:3333:4445::/64"),
936 IpPrefix.valueOf("1111:2222:3333:4445::/64"))
937 .addEqualityGroup(
938 IpPrefix.valueOf("::/0"),
939 IpPrefix.valueOf("::/0"))
940 .addEqualityGroup(
941 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"),
942 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"))
943 .testEquals();
944 }
945
946 /**
947 * Tests object string representation for IPv4.
948 */
949 @Test
950 public void testToStringIPv4() {
951 IpPrefix ipPrefix;
952
953 ipPrefix = IpPrefix.valueOf("1.2.3.0/24");
954 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
955
956 ipPrefix = IpPrefix.valueOf("1.2.3.4/24");
957 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
958
959 ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
960 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
961
962 ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
963 assertThat(ipPrefix.toString(), is("255.255.255.255/32"));
964 }
965
966 /**
967 * Tests object string representation for IPv6.
968 */
969 @Test
970 public void testToStringIPv6() {
971 IpPrefix ipPrefix;
972
973 ipPrefix = IpPrefix.valueOf("1100::/8");
974 assertThat(ipPrefix.toString(), is("1100::/8"));
975
976 ipPrefix = IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8885/8");
977 assertThat(ipPrefix.toString(), is("1100::/8"));
978
979 ipPrefix = IpPrefix.valueOf("::/0");
980 assertThat(ipPrefix.toString(), is("::/0"));
981
982 ipPrefix = IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
983 assertThat(ipPrefix.toString(),
984 is("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"));
Jonathan Hart70da5122014-10-01 16:37:42 -0700985 }
Ayaka Koshibe16698a32014-09-13 22:19:02 -0700986}