NeLocationProvider
[groupbasedpolicy.git] / groupbasedpolicy / src / test / java / org / opendaylight / groupbasedpolicy / util / NetUtilsTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.groupbasedpolicy.util;
10
11 import org.junit.Assert;
12 import org.junit.Rule;
13 import org.junit.Test;
14 import org.junit.rules.ExpectedException;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
19
20 public class NetUtilsTest {
21
22     private final String IPV4_ADDRESS_1 = "192.168.50.20";
23     private final String IPV4_ADDRESS_2 = "10.0.0.1";
24     private final String IPV6_HOST_ADDRESS = "DEAD:BEEF::1";
25     private final String IPV6_NETWORK_ADDRESS_1 = "DEAD:BEEF::";
26     private final String IPV6_NETWORK_ADDRESS_2 = "DEAF:BABE::";
27     private final String MASK_16 = "/16";
28     private final String MASK_24 = "/24";
29     private final String MASK_32 = "/32";
30     private final String MASK_64 = "/64";
31
32     @Rule
33     public ExpectedException thrown = ExpectedException.none();
34
35     @Test
36     public void testGetMaskFromPrefix_FromNull () {
37         thrown.expect(NumberFormatException.class);
38         NetUtils.getMaskFromPrefix(null);
39     }
40
41     @Test
42     public void testGetMaskFromPrefix_StringWithouPrefix () {
43         thrown.expect(NumberFormatException.class);
44         NetUtils.getMaskFromPrefix(IPV4_ADDRESS_1);
45     }
46
47     @Test
48     public void testGetMaskFromPrefix_Correct () {
49         int result = NetUtils.getMaskFromPrefix(IPV4_ADDRESS_1 + MASK_24);
50         Assert.assertEquals(24, result);
51     }
52
53     @Test
54     public void testGetIpAddrFromPrefix_FromNull () {
55         String result = NetUtils.getIpAddrFromPrefix(null);
56         Assert.assertTrue(result.isEmpty());
57     }
58
59     @Test
60     public void testGetIpAddrFromPrefix_StringWithouPrefixLength () {
61         String result = NetUtils.getIpAddrFromPrefix(IPV4_ADDRESS_1);
62         Assert.assertEquals(IPV4_ADDRESS_1, result);
63     }
64
65     @Test
66     public void testGetIpAddrFromPrefix_Ipv4Prefix () {
67         String result = NetUtils.getIpAddrFromPrefix(IPV4_ADDRESS_1 + MASK_24);
68         Assert.assertEquals(IPV4_ADDRESS_1, result);
69     }
70
71     @Test
72     public void testGetIpAddrFromPrefix_Ipv6Prefix () {
73         String result = NetUtils.getIpAddrFromPrefix(IPV6_HOST_ADDRESS + MASK_64);
74         Assert.assertEquals(IPV6_HOST_ADDRESS, result);
75     }
76
77     @Test
78     public void testApplyMaskOnIpv6Prefix_NullPrefix () {
79         Ipv6Address result = NetUtils.applyMaskOnIpv6Prefix(null, 0);
80         Assert.assertNull(result);
81     }
82
83     @Test
84     public void testApplyMaskOnIpv6Prefix_PrefixLengthOutOfRange () {
85         Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
86         thrown.expect(IllegalArgumentException.class);
87         NetUtils.applyMaskOnIpv6Prefix(prefix, 130);
88     }
89
90     @Test
91     public void testApplyMaskOnIpv6Prefix_Correct () {
92         Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
93         Ipv6Address result = NetUtils.applyMaskOnIpv6Prefix(prefix, 64);
94         Assert.assertTrue(IPV6_NETWORK_ADDRESS_1.equalsIgnoreCase(result.getValue()));
95     }
96
97     @Test
98     public void testApplyMaskOnIpv6Address_NullAddress () {
99         Ipv6Address result = NetUtils.applyMaskOnIpv6Address(null, 0);
100         Assert.assertNull(result);
101     }
102
103     @Test
104     public void testApplyMaskOnIpv6Address_PrefixLengthOutOfRange () {
105         Ipv6Address prefix = new Ipv6Address(IPV6_HOST_ADDRESS);
106         thrown.expect(IllegalArgumentException.class);
107         NetUtils.applyMaskOnIpv6Address(prefix, 130);
108     }
109
110     @Test
111     public void testApplyMaskOnIpv6Address_Correct () {
112         Ipv6Address prefix = new Ipv6Address(IPV6_HOST_ADDRESS);
113         Ipv6Address result = NetUtils.applyMaskOnIpv6Address(prefix, 64);
114         Assert.assertTrue(IPV6_NETWORK_ADDRESS_1.equalsIgnoreCase(result.getValue()));
115     }
116
117     @Test
118     public void testSamePrefix_NullInput () {
119         Ipv4Prefix prefix = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24);
120         boolean result = NetUtils.samePrefix(new IpPrefix(prefix), null);
121         Assert.assertFalse(result);
122         result = NetUtils.samePrefix(null, new IpPrefix(prefix));
123         Assert.assertFalse(result);
124     }
125
126     @Test
127     public void testSamePrefix_Ipv6AndIpv4 () {
128         Ipv4Prefix prefix4 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24);
129         Ipv6Prefix prefix6 = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
130         boolean result = NetUtils.samePrefix(new IpPrefix(prefix4), new IpPrefix(prefix6));
131         Assert.assertFalse(result);
132         result = NetUtils.samePrefix(new IpPrefix(prefix6), new IpPrefix(prefix4));
133         Assert.assertFalse(result);
134     }
135
136     @Test
137     public void testSamePrefix_Ipv4DifferentNetwork () {
138         Ipv4Prefix prefix1 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24);
139         Ipv4Prefix prefix2 = new Ipv4Prefix(IPV4_ADDRESS_2 + MASK_24);
140         boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2));
141         Assert.assertFalse(result);
142     }
143
144     @Test
145     public void testSamePrefix_Ipv6DifferentNetwork () {
146         Ipv6Prefix prefix1 = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
147         Ipv6Prefix prefix2 = new Ipv6Prefix(IPV6_NETWORK_ADDRESS_2 + MASK_64);
148         boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2));
149         Assert.assertFalse(result);
150     }
151
152     @Test
153     public void testSamePrefix_Ipv4DifferentPrefix () {
154         Ipv4Prefix prefix1 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24);
155         Ipv4Prefix prefix2 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_16);
156         boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2));
157         Assert.assertFalse(result);
158     }
159
160     @Test
161     public void testSamePrefix_Ipv6DifferentPrefix () {
162         Ipv6Prefix prefix1 = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
163         Ipv6Prefix prefix2 = new Ipv6Prefix(IPV6_NETWORK_ADDRESS_2 + MASK_32);
164         boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2));
165         Assert.assertFalse(result);
166     }
167
168     @Test
169     public void testSamePrefix_Ipv4SamePrefix () {
170         Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_24);
171         boolean result = NetUtils.samePrefix(new IpPrefix(prefix), new IpPrefix(prefix));
172         Assert.assertTrue(result);
173     }
174
175     @Test
176     public void testSamePrefix_Ipv6SamePrefix () {
177         Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
178         boolean result = NetUtils.samePrefix(new IpPrefix(prefix), new IpPrefix(prefix));
179         Assert.assertTrue(result);
180     }
181 }