blob: ba765b1e6c719d640d98ab4714aa747a397270cb [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 org.junit.Test;
19
Ray Milkey37f6a382014-11-25 14:54:42 -080020import com.google.common.testing.EqualsTester;
21
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080022import static org.hamcrest.Matchers.equalTo;
23import static org.hamcrest.Matchers.is;
Jonathan Hartb7a2ac32014-09-19 10:42:27 -070024import static org.junit.Assert.assertFalse;
Pavlin Radoslavov34c81642014-11-04 16:21:38 -080025import static org.junit.Assert.assertNull;
26import static org.junit.Assert.assertThat;
Ayaka Koshibe40e7fec2014-09-16 22:32:19 -070027import static org.junit.Assert.assertTrue;
Ray Milkey37f6a382014-11-25 14:54:42 -080028import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass;
Ayaka Koshibe16698a32014-09-13 22:19:02 -070029
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080030/**
31 * Tests for class {@link IpPrefix}.
32 */
Ayaka Koshibe1d56fe42014-09-19 16:51:58 -070033public class IpPrefixTest {
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080034 /**
35 * Tests the immutability of {@link IpPrefix}.
36 */
Ayaka Koshibe16698a32014-09-13 22:19:02 -070037 @Test
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -080038 public void testImmutable() {
Ray Milkey37f6a382014-11-25 14:54:42 -080039 assertThatClassIsImmutableBaseClass(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 /**
Pavlin Radoslavov34c81642014-11-04 16:21:38 -0800148 * Tests getting the Ip4Prefix and Ip6Prefix view of the IP prefix.
149 */
150 @Test
151 public void testGetIp4AndIp6PrefixView() {
152 IpPrefix ipPrefix;
153 Ip4Prefix ip4Prefix;
154 Ip6Prefix ip6Prefix;
155
156 // Pure IPv4 IpPrefix
157 ipPrefix = IpPrefix.valueOf("1.2.3.0/24");
158 ip4Prefix = ipPrefix.getIp4Prefix();
159 ip6Prefix = ipPrefix.getIp6Prefix();
160 assertThat(ip4Prefix.toString(), is("1.2.3.0/24"));
161 assertNull(ip6Prefix);
162
163 // IPv4 IpPrefix that is Ip4Prefix
164 ipPrefix = Ip4Prefix.valueOf("1.2.3.0/24");
165 ip4Prefix = ipPrefix.getIp4Prefix();
166 ip6Prefix = ipPrefix.getIp6Prefix();
167 assertThat(ip4Prefix.toString(), is("1.2.3.0/24"));
168 assertNull(ip6Prefix);
169
170 // Pure IPv6 IpPrefix
171 ipPrefix = IpPrefix.valueOf("1111:2222::/64");
172 ip4Prefix = ipPrefix.getIp4Prefix();
173 ip6Prefix = ipPrefix.getIp6Prefix();
174 assertNull(ip4Prefix);
175 assertThat(ip6Prefix.toString(), is("1111:2222::/64"));
176
177 // IPv6 IpPrefix that is Ip6Prefix
178 ipPrefix = Ip6Prefix.valueOf("1111:2222::/64");
179 ip4Prefix = ipPrefix.getIp4Prefix();
180 ip6Prefix = ipPrefix.getIp6Prefix();
181 assertNull(ip4Prefix);
182 assertThat(ip6Prefix.toString(), is("1111:2222::/64"));
183 }
184
185 /**
Pavlin Radoslavov34c921a2014-11-03 15:41:22 -0800186 * Tests valueOf() converter for IPv4 integer value.
187 */
188 @Test
189 public void testValueOfForIntegerIPv4() {
190 IpPrefix ipPrefix;
191
192 ipPrefix = IpPrefix.valueOf(0x01020304, 24);
193 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
194
195 ipPrefix = IpPrefix.valueOf(0x01020304, 32);
196 assertThat(ipPrefix.toString(), is("1.2.3.4/32"));
197
198 ipPrefix = IpPrefix.valueOf(0x01020305, 32);
199 assertThat(ipPrefix.toString(), is("1.2.3.5/32"));
200
201 ipPrefix = IpPrefix.valueOf(0, 0);
202 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
203
204 ipPrefix = IpPrefix.valueOf(0, 32);
205 assertThat(ipPrefix.toString(), is("0.0.0.0/32"));
206
207 ipPrefix = IpPrefix.valueOf(0xffffffff, 0);
208 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
209
210 ipPrefix = IpPrefix.valueOf(0xffffffff, 16);
211 assertThat(ipPrefix.toString(), is("255.255.0.0/16"));
212
213 ipPrefix = IpPrefix.valueOf(0xffffffff, 32);
214 assertThat(ipPrefix.toString(), is("255.255.255.255/32"));
215 }
216
217 /**
218 * Tests invalid valueOf() converter for IPv4 integer value and
219 * negative prefix length.
220 */
221 @Test(expected = IllegalArgumentException.class)
222 public void testInvalidValueOfIntegerNegativePrefixLengthIPv4() {
223 IpPrefix ipPrefix;
224
225 ipPrefix = IpPrefix.valueOf(0x01020304, -1);
226 }
227
228 /**
229 * Tests invalid valueOf() converter for IPv4 integer value and
230 * too long prefix length.
231 */
232 @Test(expected = IllegalArgumentException.class)
233 public void testInvalidValueOfIntegerTooLongPrefixLengthIPv4() {
234 IpPrefix ipPrefix;
235
236 ipPrefix = IpPrefix.valueOf(0x01020304, 33);
237 }
238
239 /**
240 * Tests valueOf() converter for IPv4 byte array.
241 */
242 @Test
243 public void testValueOfByteArrayIPv4() {
244 IpPrefix ipPrefix;
245 byte[] value;
246
247 value = new byte[] {1, 2, 3, 4};
248 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 24);
249 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
250
251 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 32);
252 assertThat(ipPrefix.toString(), is("1.2.3.4/32"));
253
254 value = new byte[] {1, 2, 3, 5};
255 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 32);
256 assertThat(ipPrefix.toString(), is("1.2.3.5/32"));
257
258 value = new byte[] {0, 0, 0, 0};
259 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 0);
260 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
261
262 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 32);
263 assertThat(ipPrefix.toString(), is("0.0.0.0/32"));
264
265 value = new byte[] {(byte) 0xff, (byte) 0xff,
266 (byte) 0xff, (byte) 0xff};
267 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 0);
268 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
269
270 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 16);
271 assertThat(ipPrefix.toString(), is("255.255.0.0/16"));
272
273 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 32);
274 assertThat(ipPrefix.toString(), is("255.255.255.255/32"));
275 }
276
277 /**
278 * Tests valueOf() converter for IPv6 byte array.
279 */
280 @Test
281 public void testValueOfByteArrayIPv6() {
282 IpPrefix ipPrefix;
283 byte[] value;
284
285 value = new byte[] {0x11, 0x11, 0x22, 0x22,
286 0x33, 0x33, 0x44, 0x44,
287 0x55, 0x55, 0x66, 0x66,
288 0x77, 0x77, (byte) 0x88, (byte) 0x88};
289 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 120);
290 assertThat(ipPrefix.toString(),
291 is("1111:2222:3333:4444:5555:6666:7777:8800/120"));
292
293 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 128);
294 assertThat(ipPrefix.toString(),
295 is("1111:2222:3333:4444:5555:6666:7777:8888/128"));
296
297 value = new byte[] {0x00, 0x00, 0x00, 0x00,
298 0x00, 0x00, 0x00, 0x00,
299 0x00, 0x00, 0x00, 0x00,
300 0x00, 0x00, 0x00, 0x00};
301 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 0);
302 assertThat(ipPrefix.toString(), is("::/0"));
303
304 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 128);
305 assertThat(ipPrefix.toString(), is("::/128"));
306
307 value = new byte[] {(byte) 0xff, (byte) 0xff,
308 (byte) 0xff, (byte) 0xff,
309 (byte) 0xff, (byte) 0xff,
310 (byte) 0xff, (byte) 0xff,
311 (byte) 0xff, (byte) 0xff,
312 (byte) 0xff, (byte) 0xff,
313 (byte) 0xff, (byte) 0xff,
314 (byte) 0xff, (byte) 0xff};
315 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 0);
316 assertThat(ipPrefix.toString(), is("::/0"));
317
318 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 64);
319 assertThat(ipPrefix.toString(), is("ffff:ffff:ffff:ffff::/64"));
320
321 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 128);
322 assertThat(ipPrefix.toString(),
323 is("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"));
324 }
325
326 /**
327 * Tests invalid valueOf() converter for a null array for IPv4.
328 */
329 @Test(expected = NullPointerException.class)
330 public void testInvalidValueOfNullArrayIPv4() {
331 IpPrefix ipPrefix;
332 byte[] value;
333
334 value = null;
335 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 24);
336 }
337
338 /**
339 * Tests invalid valueOf() converter for a null array for IPv6.
340 */
341 @Test(expected = NullPointerException.class)
342 public void testInvalidValueOfNullArrayIPv6() {
343 IpPrefix ipPrefix;
344 byte[] value;
345
346 value = null;
347 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 120);
348 }
349
350 /**
351 * Tests invalid valueOf() converter for a short array for IPv4.
352 */
353 @Test(expected = IllegalArgumentException.class)
354 public void testInvalidValueOfShortArrayIPv4() {
355 IpPrefix ipPrefix;
356 byte[] value;
357
358 value = new byte[] {1, 2, 3};
359 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 24);
360 }
361
362 /**
363 * Tests invalid valueOf() converter for a short array for IPv6.
364 */
365 @Test(expected = IllegalArgumentException.class)
366 public void testInvalidValueOfShortArrayIPv6() {
367 IpPrefix ipPrefix;
368 byte[] value;
369
370 value = new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
371 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 120);
372 }
373
374 /**
375 * Tests invalid valueOf() converter for IPv4 byte array and
376 * negative prefix length.
377 */
378 @Test(expected = IllegalArgumentException.class)
379 public void testInvalidValueOfByteArrayNegativePrefixLengthIPv4() {
380 IpPrefix ipPrefix;
381 byte[] value;
382
383 value = new byte[] {1, 2, 3, 4};
384 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, -1);
385 }
386
387 /**
388 * Tests invalid valueOf() converter for IPv6 byte array and
389 * negative prefix length.
390 */
391 @Test(expected = IllegalArgumentException.class)
392 public void testInvalidValueOfByteArrayNegativePrefixLengthIPv6() {
393 IpPrefix ipPrefix;
394 byte[] value;
395
396 value = new byte[] {0x11, 0x11, 0x22, 0x22,
397 0x33, 0x33, 0x44, 0x44,
398 0x55, 0x55, 0x66, 0x66,
399 0x77, 0x77, (byte) 0x88, (byte) 0x88};
400 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, -1);
401 }
402
403 /**
404 * Tests invalid valueOf() converter for IPv4 byte array and
405 * too long prefix length.
406 */
407 @Test(expected = IllegalArgumentException.class)
408 public void testInvalidValueOfByteArrayTooLongPrefixLengthIPv4() {
409 IpPrefix ipPrefix;
410 byte[] value;
411
412 value = new byte[] {1, 2, 3, 4};
413 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET, value, 33);
414 }
415
416 /**
417 * Tests invalid valueOf() converter for IPv6 byte array and
418 * too long prefix length.
419 */
420 @Test(expected = IllegalArgumentException.class)
421 public void testInvalidValueOfByteArrayTooLongPrefixLengthIPv6() {
422 IpPrefix ipPrefix;
423 byte[] value;
424
425 value = new byte[] {0x11, 0x11, 0x22, 0x22,
426 0x33, 0x33, 0x44, 0x44,
427 0x55, 0x55, 0x66, 0x66,
428 0x77, 0x77, (byte) 0x88, (byte) 0x88};
429 ipPrefix = IpPrefix.valueOf(IpAddress.Version.INET6, value, 129);
430 }
431
432 /**
433 * Tests valueOf() converter for IPv4 address.
434 */
435 @Test
436 public void testValueOfAddressIPv4() {
437 IpAddress ipAddress;
438 IpPrefix ipPrefix;
439
440 ipAddress = IpAddress.valueOf("1.2.3.4");
441 ipPrefix = IpPrefix.valueOf(ipAddress, 24);
442 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
443
444 ipPrefix = IpPrefix.valueOf(ipAddress, 32);
445 assertThat(ipPrefix.toString(), is("1.2.3.4/32"));
446
447 ipAddress = IpAddress.valueOf("1.2.3.5");
448 ipPrefix = IpPrefix.valueOf(ipAddress, 32);
449 assertThat(ipPrefix.toString(), is("1.2.3.5/32"));
450
451 ipAddress = IpAddress.valueOf("0.0.0.0");
452 ipPrefix = IpPrefix.valueOf(ipAddress, 0);
453 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
454
455 ipPrefix = IpPrefix.valueOf(ipAddress, 32);
456 assertThat(ipPrefix.toString(), is("0.0.0.0/32"));
457
458 ipAddress = IpAddress.valueOf("255.255.255.255");
459 ipPrefix = IpPrefix.valueOf(ipAddress, 0);
460 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
461
462 ipPrefix = IpPrefix.valueOf(ipAddress, 16);
463 assertThat(ipPrefix.toString(), is("255.255.0.0/16"));
464
465 ipPrefix = IpPrefix.valueOf(ipAddress, 32);
466 assertThat(ipPrefix.toString(), is("255.255.255.255/32"));
467 }
468
469 /**
470 * Tests valueOf() converter for IPv6 address.
471 */
472 @Test
473 public void testValueOfAddressIPv6() {
474 IpAddress ipAddress;
475 IpPrefix ipPrefix;
476
477 ipAddress =
478 IpAddress.valueOf("1111:2222:3333:4444:5555:6666:7777:8888");
479 ipPrefix = IpPrefix.valueOf(ipAddress, 120);
480 assertThat(ipPrefix.toString(),
481 is("1111:2222:3333:4444:5555:6666:7777:8800/120"));
482
483 ipPrefix = IpPrefix.valueOf(ipAddress, 128);
484 assertThat(ipPrefix.toString(),
485 is("1111:2222:3333:4444:5555:6666:7777:8888/128"));
486
487 ipAddress = IpAddress.valueOf("::");
488 ipPrefix = IpPrefix.valueOf(ipAddress, 0);
489 assertThat(ipPrefix.toString(), is("::/0"));
490
491 ipPrefix = IpPrefix.valueOf(ipAddress, 128);
492 assertThat(ipPrefix.toString(), is("::/128"));
493
494 ipAddress =
495 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
496 ipPrefix = IpPrefix.valueOf(ipAddress, 0);
497 assertThat(ipPrefix.toString(), is("::/0"));
498
499 ipPrefix = IpPrefix.valueOf(ipAddress, 64);
500 assertThat(ipPrefix.toString(), is("ffff:ffff:ffff:ffff::/64"));
501
502 ipPrefix = IpPrefix.valueOf(ipAddress, 128);
503 assertThat(ipPrefix.toString(),
504 is("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"));
505 }
506
507 /**
508 * Tests invalid valueOf() converter for a null IP address.
509 */
510 @Test(expected = NullPointerException.class)
511 public void testInvalidValueOfNullAddress() {
512 IpAddress ipAddress;
513 IpPrefix ipPrefix;
514
515 ipAddress = null;
516 ipPrefix = IpPrefix.valueOf(ipAddress, 24);
517 }
518
519 /**
520 * Tests invalid valueOf() converter for IPv4 address and
521 * negative prefix length.
522 */
523 @Test(expected = IllegalArgumentException.class)
524 public void testInvalidValueOfAddressNegativePrefixLengthIPv4() {
525 IpAddress ipAddress;
526 IpPrefix ipPrefix;
527
528 ipAddress = IpAddress.valueOf("1.2.3.4");
529 ipPrefix = IpPrefix.valueOf(ipAddress, -1);
530 }
531
532 /**
533 * Tests invalid valueOf() converter for IPv6 address and
534 * negative prefix length.
535 */
536 @Test(expected = IllegalArgumentException.class)
537 public void testInvalidValueOfAddressNegativePrefixLengthIPv6() {
538 IpAddress ipAddress;
539 IpPrefix ipPrefix;
540
541 ipAddress =
542 IpAddress.valueOf("1111:2222:3333:4444:5555:6666:7777:8888");
543 ipPrefix = IpPrefix.valueOf(ipAddress, -1);
544 }
545
546 /**
547 * Tests invalid valueOf() converter for IPv4 address and
548 * too long prefix length.
549 */
550 @Test(expected = IllegalArgumentException.class)
551 public void testInvalidValueOfAddressTooLongPrefixLengthIPv4() {
552 IpAddress ipAddress;
553 IpPrefix ipPrefix;
554
555 ipAddress = IpAddress.valueOf("1.2.3.4");
556 ipPrefix = IpPrefix.valueOf(ipAddress, 33);
557 }
558
559 /**
560 * Tests invalid valueOf() converter for IPv6 address and
561 * too long prefix length.
562 */
563 @Test(expected = IllegalArgumentException.class)
564 public void testInvalidValueOfAddressTooLongPrefixLengthIPv6() {
565 IpAddress ipAddress;
566 IpPrefix ipPrefix;
567
568 ipAddress =
569 IpAddress.valueOf("1111:2222:3333:4444:5555:6666:7777:8888");
570 ipPrefix = IpPrefix.valueOf(ipAddress, 129);
571 }
572
573 /**
574 * Tests valueOf() converter for IPv4 string.
575 */
576 @Test
577 public void testValueOfStringIPv4() {
578 IpPrefix ipPrefix;
579
580 ipPrefix = IpPrefix.valueOf("1.2.3.4/24");
581 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
582
583 ipPrefix = IpPrefix.valueOf("1.2.3.4/32");
584 assertThat(ipPrefix.toString(), is("1.2.3.4/32"));
585
586 ipPrefix = IpPrefix.valueOf("1.2.3.5/32");
587 assertThat(ipPrefix.toString(), is("1.2.3.5/32"));
588
589 ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
590 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
591
592 ipPrefix = IpPrefix.valueOf("0.0.0.0/32");
593 assertThat(ipPrefix.toString(), is("0.0.0.0/32"));
594
595 ipPrefix = IpPrefix.valueOf("255.255.255.255/0");
596 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
597
598 ipPrefix = IpPrefix.valueOf("255.255.255.255/16");
599 assertThat(ipPrefix.toString(), is("255.255.0.0/16"));
600
601 ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
602 assertThat(ipPrefix.toString(), is("255.255.255.255/32"));
603 }
604
605 /**
606 * Tests valueOf() converter for IPv6 string.
607 */
608 @Test
609 public void testValueOfStringIPv6() {
610 IpPrefix ipPrefix;
611
612 ipPrefix =
613 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8888/120");
614 assertThat(ipPrefix.toString(),
615 is("1111:2222:3333:4444:5555:6666:7777:8800/120"));
616
617 ipPrefix =
618 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8888/128");
619 assertThat(ipPrefix.toString(),
620 is("1111:2222:3333:4444:5555:6666:7777:8888/128"));
621
622 ipPrefix = IpPrefix.valueOf("::/0");
623 assertThat(ipPrefix.toString(), is("::/0"));
624
625 ipPrefix = IpPrefix.valueOf("::/128");
626 assertThat(ipPrefix.toString(), is("::/128"));
627
628 ipPrefix =
629 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/0");
630 assertThat(ipPrefix.toString(), is("::/0"));
631
632 ipPrefix =
633 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/64");
634 assertThat(ipPrefix.toString(), is("ffff:ffff:ffff:ffff::/64"));
635
636 ipPrefix =
637 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
638 assertThat(ipPrefix.toString(),
639 is("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"));
640 }
641
642 /**
643 * Tests invalid valueOf() converter for a null string.
644 */
645 @Test(expected = NullPointerException.class)
646 public void testInvalidValueOfNullString() {
647 IpPrefix ipPrefix;
648 String fromString;
649
650 fromString = null;
651 ipPrefix = IpPrefix.valueOf(fromString);
652 }
653
654 /**
655 * Tests invalid valueOf() converter for an empty string.
656 */
657 @Test(expected = IllegalArgumentException.class)
658 public void testInvalidValueOfEmptyString() {
659 IpPrefix ipPrefix;
660 String fromString;
661
662 fromString = "";
663 ipPrefix = IpPrefix.valueOf(fromString);
664 }
665
666 /**
667 * Tests invalid valueOf() converter for an incorrect string.
668 */
669 @Test(expected = IllegalArgumentException.class)
670 public void testInvalidValueOfIncorrectString() {
671 IpPrefix ipPrefix;
672 String fromString;
673
674 fromString = "NoSuchIpPrefix";
675 ipPrefix = IpPrefix.valueOf(fromString);
676 }
677
678 /**
679 * Tests invalid valueOf() converter for IPv4 string and
680 * negative prefix length.
681 */
682 @Test(expected = IllegalArgumentException.class)
683 public void testInvalidValueOfStringNegativePrefixLengthIPv4() {
684 IpPrefix ipPrefix;
685
686 ipPrefix = IpPrefix.valueOf("1.2.3.4/-1");
687 }
688
689 /**
690 * Tests invalid valueOf() converter for IPv6 string and
691 * negative prefix length.
692 */
693 @Test(expected = IllegalArgumentException.class)
694 public void testInvalidValueOfStringNegativePrefixLengthIPv6() {
695 IpPrefix ipPrefix;
696
697 ipPrefix =
698 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8888/-1");
699 }
700
701 /**
702 * Tests invalid valueOf() converter for IPv4 string and
703 * too long prefix length.
704 */
705 @Test(expected = IllegalArgumentException.class)
706 public void testInvalidValueOfStringTooLongPrefixLengthIPv4() {
707 IpPrefix ipPrefix;
708
709 ipPrefix = IpPrefix.valueOf("1.2.3.4/33");
710 }
711
712 /**
713 * Tests invalid valueOf() converter for IPv6 string and
714 * too long prefix length.
715 */
716 @Test(expected = IllegalArgumentException.class)
717 public void testInvalidValueOfStringTooLongPrefixLengthIPv6() {
718 IpPrefix ipPrefix;
719
720 ipPrefix =
721 IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8888/129");
722 }
723
724 /**
725 * Tests IP prefix contains another IP prefix for IPv4.
726 */
727 @Test
728 public void testContainsIpPrefixIPv4() {
729 IpPrefix ipPrefix;
730
731 ipPrefix = IpPrefix.valueOf("1.2.0.0/24");
732 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/24")));
733 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/32")));
734 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.4/32")));
735 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/16")));
736 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.3.0.0/24")));
737 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/16")));
738 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/0")));
739 assertFalse(ipPrefix.contains(IpPrefix.valueOf("255.255.255.255/32")));
740
741 ipPrefix = IpPrefix.valueOf("1.2.0.0/32");
742 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/24")));
743 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/32")));
744 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.4/32")));
745 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/16")));
746 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.3.0.0/24")));
747 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/16")));
748 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/0")));
749 assertFalse(ipPrefix.contains(IpPrefix.valueOf("255.255.255.255/32")));
750
751 ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
752 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/24")));
753 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/32")));
754 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.4/32")));
755 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/16")));
756 assertTrue(ipPrefix.contains(IpPrefix.valueOf("1.3.0.0/24")));
757 assertTrue(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/16")));
758 assertTrue(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/0")));
759 assertTrue(ipPrefix.contains(IpPrefix.valueOf("255.255.255.255/32")));
760
761 ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
762 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/24")));
763 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/32")));
764 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.4/32")));
765 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/16")));
766 assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.3.0.0/24")));
767 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/16")));
768 assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/0")));
769 assertTrue(ipPrefix.contains(IpPrefix.valueOf("255.255.255.255/32")));
770 }
771
772 /**
773 * Tests IP prefix contains another IP prefix for IPv6.
774 */
775 @Test
776 public void testContainsIpPrefixIPv6() {
777 IpPrefix ipPrefix;
778
779 ipPrefix = IpPrefix.valueOf("1111:2222:3333:4444::/120");
780 assertTrue(ipPrefix.contains(
781 IpPrefix.valueOf("1111:2222:3333:4444::/120")));
782 assertTrue(ipPrefix.contains(
783 IpPrefix.valueOf("1111:2222:3333:4444::/128")));
784 assertTrue(ipPrefix.contains(
785 IpPrefix.valueOf("1111:2222:3333:4444::1/128")));
786 assertFalse(ipPrefix.contains(
787 IpPrefix.valueOf("1111:2222:3333:4444::/64")));
788 assertFalse(ipPrefix.contains(
789 IpPrefix.valueOf("1111:2222:3333:4445::/120")));
790 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/64")));
791 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/0")));
792 assertFalse(ipPrefix.contains(
793 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128")));
794
795 ipPrefix = IpPrefix.valueOf("1111:2222:3333:4444::/128");
796 assertFalse(ipPrefix.contains(
797 IpPrefix.valueOf("1111:2222:3333:4444::/120")));
798 assertTrue(ipPrefix.contains(
799 IpPrefix.valueOf("1111:2222:3333:4444::/128")));
800 assertFalse(ipPrefix.contains(
801 IpPrefix.valueOf("1111:2222:3333:4444::1/128")));
802 assertFalse(ipPrefix.contains(
803 IpPrefix.valueOf("1111:2222:3333:4444::/64")));
804 assertFalse(ipPrefix.contains(
805 IpPrefix.valueOf("1111:2222:3333:4445::/120")));
806 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/64")));
807 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/0")));
808 assertFalse(ipPrefix.contains(
809 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128")));
810
811 ipPrefix = IpPrefix.valueOf("::/0");
812 assertTrue(ipPrefix.contains(
813 IpPrefix.valueOf("1111:2222:3333:4444::/120")));
814 assertTrue(ipPrefix.contains(
815 IpPrefix.valueOf("1111:2222:3333:4444::/128")));
816 assertTrue(ipPrefix.contains(
817 IpPrefix.valueOf("1111:2222:3333:4444::1/128")));
818 assertTrue(ipPrefix.contains(
819 IpPrefix.valueOf("1111:2222:3333:4444::/64")));
820 assertTrue(ipPrefix.contains(
821 IpPrefix.valueOf("1111:2222:3333:4445::/120")));
822 assertTrue(ipPrefix.contains(IpPrefix.valueOf("::/64")));
823 assertTrue(ipPrefix.contains(IpPrefix.valueOf("::/0")));
824 assertTrue(ipPrefix.contains(
825 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128")));
826
827 ipPrefix =
828 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
829 assertFalse(ipPrefix.contains(
830 IpPrefix.valueOf("1111:2222:3333:4444::/120")));
831 assertFalse(ipPrefix.contains(
832 IpPrefix.valueOf("1111:2222:3333:4444::/128")));
833 assertFalse(ipPrefix.contains(
834 IpPrefix.valueOf("1111:2222:3333:4444::1/128")));
835 assertFalse(ipPrefix.contains(
836 IpPrefix.valueOf("1111:2222:3333:4444::/64")));
837 assertFalse(ipPrefix.contains(
838 IpPrefix.valueOf("1111:2222:3333:4445::/120")));
839 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/64")));
840 assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/0")));
841 assertTrue(ipPrefix.contains(
842 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128")));
843 }
844
845 /**
846 * Tests IP prefix contains IP address for IPv4.
847 */
848 @Test
849 public void testContainsIpAddressIPv4() {
850 IpPrefix ipPrefix;
851
852 ipPrefix = IpPrefix.valueOf("1.2.0.0/24");
853 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.2.0.0")));
854 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.2.0.4")));
855 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.3.0.0")));
856 assertFalse(ipPrefix.contains(IpAddress.valueOf("0.0.0.0")));
857 assertFalse(ipPrefix.contains(IpAddress.valueOf("255.255.255.255")));
858
859 ipPrefix = IpPrefix.valueOf("1.2.0.0/32");
860 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.2.0.0")));
861 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.2.0.4")));
862 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.3.0.0")));
863 assertFalse(ipPrefix.contains(IpAddress.valueOf("0.0.0.0")));
864 assertFalse(ipPrefix.contains(IpAddress.valueOf("255.255.255.255")));
865
866 ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
867 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.2.0.0")));
868 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.2.0.4")));
869 assertTrue(ipPrefix.contains(IpAddress.valueOf("1.3.0.0")));
870 assertTrue(ipPrefix.contains(IpAddress.valueOf("0.0.0.0")));
871 assertTrue(ipPrefix.contains(IpAddress.valueOf("255.255.255.255")));
872
873 ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
874 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.2.0.0")));
875 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.2.0.4")));
876 assertFalse(ipPrefix.contains(IpAddress.valueOf("1.3.0.0")));
877 assertFalse(ipPrefix.contains(IpAddress.valueOf("0.0.0.0")));
878 assertTrue(ipPrefix.contains(IpAddress.valueOf("255.255.255.255")));
879 }
880
881 /**
882 * Tests IP prefix contains IP address for IPv6.
883 */
884 @Test
885 public void testContainsIpAddressIPv6() {
886 IpPrefix ipPrefix;
887
888 ipPrefix = IpPrefix.valueOf("1111:2222:3333:4444::/120");
889 assertTrue(ipPrefix.contains(
890 IpAddress.valueOf("1111:2222:3333:4444::")));
891 assertTrue(ipPrefix.contains(
892 IpAddress.valueOf("1111:2222:3333:4444::1")));
893 assertFalse(ipPrefix.contains(
894 IpAddress.valueOf("1111:2222:3333:4445::")));
895 assertFalse(ipPrefix.contains(IpAddress.valueOf("::")));
896 assertFalse(ipPrefix.contains(
897 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
898
899 ipPrefix = IpPrefix.valueOf("1111:2222:3333:4444::/128");
900 assertTrue(ipPrefix.contains(
901 IpAddress.valueOf("1111:2222:3333:4444::")));
902 assertFalse(ipPrefix.contains(
903 IpAddress.valueOf("1111:2222:3333:4444::1")));
904 assertFalse(ipPrefix.contains(
905 IpAddress.valueOf("1111:2222:3333:4445::")));
906 assertFalse(ipPrefix.contains(IpAddress.valueOf("::")));
907 assertFalse(ipPrefix.contains(
908 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
909
910 ipPrefix = IpPrefix.valueOf("::/0");
911 assertTrue(ipPrefix.contains(
912 IpAddress.valueOf("1111:2222:3333:4444::")));
913 assertTrue(ipPrefix.contains(
914 IpAddress.valueOf("1111:2222:3333:4444::1")));
915 assertTrue(ipPrefix.contains(
916 IpAddress.valueOf("1111:2222:3333:4445::")));
917 assertTrue(ipPrefix.contains(IpAddress.valueOf("::")));
918 assertTrue(ipPrefix.contains(
919 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
920
921 ipPrefix =
922 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
923 assertFalse(ipPrefix.contains(
924 IpAddress.valueOf("1111:2222:3333:4444::")));
925 assertFalse(ipPrefix.contains(
926 IpAddress.valueOf("1111:2222:3333:4444::1")));
927 assertFalse(ipPrefix.contains(
928 IpAddress.valueOf("1111:2222:3333:4445::")));
929 assertFalse(ipPrefix.contains(IpAddress.valueOf("::")));
930 assertTrue(ipPrefix.contains(
931 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
932 }
933
934 /**
935 * Tests equality of {@link IpPrefix} for IPv4.
936 */
937 @Test
938 public void testEqualityIPv4() {
939 new EqualsTester()
940 .addEqualityGroup(IpPrefix.valueOf("1.2.0.0/24"),
941 IpPrefix.valueOf("1.2.0.0/24"),
942 IpPrefix.valueOf("1.2.0.4/24"))
943 .addEqualityGroup(IpPrefix.valueOf("1.2.0.0/16"),
944 IpPrefix.valueOf("1.2.0.0/16"))
945 .addEqualityGroup(IpPrefix.valueOf("1.2.0.0/32"),
946 IpPrefix.valueOf("1.2.0.0/32"))
947 .addEqualityGroup(IpPrefix.valueOf("1.3.0.0/24"),
948 IpPrefix.valueOf("1.3.0.0/24"))
949 .addEqualityGroup(IpPrefix.valueOf("0.0.0.0/0"),
950 IpPrefix.valueOf("0.0.0.0/0"))
951 .addEqualityGroup(IpPrefix.valueOf("255.255.255.255/32"),
952 IpPrefix.valueOf("255.255.255.255/32"))
953 .testEquals();
954 }
955
956 /**
957 * Tests equality of {@link IpPrefix} for IPv6.
958 */
959 @Test
960 public void testEqualityIPv6() {
961 new EqualsTester()
962 .addEqualityGroup(
963 IpPrefix.valueOf("1111:2222:3333:4444::/120"),
964 IpPrefix.valueOf("1111:2222:3333:4444::1/120"),
965 IpPrefix.valueOf("1111:2222:3333:4444::/120"))
966 .addEqualityGroup(
967 IpPrefix.valueOf("1111:2222:3333:4444::/64"),
968 IpPrefix.valueOf("1111:2222:3333:4444::/64"))
969 .addEqualityGroup(
970 IpPrefix.valueOf("1111:2222:3333:4444::/128"),
971 IpPrefix.valueOf("1111:2222:3333:4444::/128"))
972 .addEqualityGroup(
973 IpPrefix.valueOf("1111:2222:3333:4445::/64"),
974 IpPrefix.valueOf("1111:2222:3333:4445::/64"))
975 .addEqualityGroup(
976 IpPrefix.valueOf("::/0"),
977 IpPrefix.valueOf("::/0"))
978 .addEqualityGroup(
979 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"),
980 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"))
981 .testEquals();
982 }
983
984 /**
985 * Tests object string representation for IPv4.
986 */
987 @Test
988 public void testToStringIPv4() {
989 IpPrefix ipPrefix;
990
991 ipPrefix = IpPrefix.valueOf("1.2.3.0/24");
992 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
993
994 ipPrefix = IpPrefix.valueOf("1.2.3.4/24");
995 assertThat(ipPrefix.toString(), is("1.2.3.0/24"));
996
997 ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
998 assertThat(ipPrefix.toString(), is("0.0.0.0/0"));
999
1000 ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
1001 assertThat(ipPrefix.toString(), is("255.255.255.255/32"));
1002 }
1003
1004 /**
1005 * Tests object string representation for IPv6.
1006 */
1007 @Test
1008 public void testToStringIPv6() {
1009 IpPrefix ipPrefix;
1010
1011 ipPrefix = IpPrefix.valueOf("1100::/8");
1012 assertThat(ipPrefix.toString(), is("1100::/8"));
1013
1014 ipPrefix = IpPrefix.valueOf("1111:2222:3333:4444:5555:6666:7777:8885/8");
1015 assertThat(ipPrefix.toString(), is("1100::/8"));
1016
1017 ipPrefix = IpPrefix.valueOf("::/0");
1018 assertThat(ipPrefix.toString(), is("::/0"));
1019
1020 ipPrefix = IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
1021 assertThat(ipPrefix.toString(),
1022 is("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"));
Jonathan Hart70da5122014-10-01 16:37:42 -07001023 }
Ayaka Koshibe16698a32014-09-13 22:19:02 -07001024}