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