2 * Copyright (C) 2010 The Android Open Source Project
4 * 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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 import android.net.LinkProperties;
20 import android.net.RouteInfo;
21 import android.test.suitebuilder.annotation.SmallTest;
22 import junit.framework.TestCase;
24 import java.net.InetAddress;
26 public class LinkPropertiesTest extends TestCase {
27 private static String ADDRV4 = "75.208.6.1";
28 private static String ADDRV6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
29 private static String DNS1 = "75.208.7.1";
30 private static String DNS2 = "69.78.7.1";
31 private static String GATEWAY1 = "75.208.8.1";
32 private static String GATEWAY2 = "69.78.8.1";
33 private static String NAME = "qmi0";
36 public void testEqualsNull() {
37 LinkProperties source = new LinkProperties();
38 LinkProperties target = new LinkProperties();
40 assertFalse(source == target);
41 assertTrue(source.equals(target));
42 assertTrue(source.hashCode() == target.hashCode());
46 public void testEqualsSameOrder() {
48 LinkProperties source = new LinkProperties();
49 source.setInterfaceName(NAME);
50 // set 2 link addresses
51 source.addLinkAddress(new LinkAddress(
52 NetworkUtils.numericToInetAddress(ADDRV4), 32));
53 source.addLinkAddress(new LinkAddress(
54 NetworkUtils.numericToInetAddress(ADDRV6), 128));
56 source.addDns(NetworkUtils.numericToInetAddress(DNS1));
57 source.addDns(NetworkUtils.numericToInetAddress(DNS2));
59 source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1)));
60 source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2)));
62 LinkProperties target = new LinkProperties();
64 // All fields are same
65 target.setInterfaceName(NAME);
66 target.addLinkAddress(new LinkAddress(
67 NetworkUtils.numericToInetAddress(ADDRV4), 32));
68 target.addLinkAddress(new LinkAddress(
69 NetworkUtils.numericToInetAddress(ADDRV6), 128));
70 target.addDns(NetworkUtils.numericToInetAddress(DNS1));
71 target.addDns(NetworkUtils.numericToInetAddress(DNS2));
72 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1)));
73 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2)));
75 assertTrue(source.equals(target));
76 assertTrue(source.hashCode() == target.hashCode());
79 // change Interface Name
80 target.setInterfaceName("qmi1");
81 target.addLinkAddress(new LinkAddress(
82 NetworkUtils.numericToInetAddress(ADDRV4), 32));
83 target.addLinkAddress(new LinkAddress(
84 NetworkUtils.numericToInetAddress(ADDRV6), 128));
85 target.addDns(NetworkUtils.numericToInetAddress(DNS1));
86 target.addDns(NetworkUtils.numericToInetAddress(DNS2));
87 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1)));
88 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2)));
89 assertFalse(source.equals(target));
92 target.setInterfaceName(NAME);
93 // change link addresses
94 target.addLinkAddress(new LinkAddress(
95 NetworkUtils.numericToInetAddress("75.208.6.2"), 32));
96 target.addLinkAddress(new LinkAddress(
97 NetworkUtils.numericToInetAddress(ADDRV6), 128));
98 target.addDns(NetworkUtils.numericToInetAddress(DNS1));
99 target.addDns(NetworkUtils.numericToInetAddress(DNS2));
100 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1)));
101 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2)));
102 assertFalse(source.equals(target));
105 target.setInterfaceName(NAME);
106 target.addLinkAddress(new LinkAddress(
107 NetworkUtils.numericToInetAddress(ADDRV4), 32));
108 target.addLinkAddress(new LinkAddress(
109 NetworkUtils.numericToInetAddress(ADDRV6), 128));
111 target.addDns(NetworkUtils.numericToInetAddress("75.208.7.2"));
112 target.addDns(NetworkUtils.numericToInetAddress(DNS2));
113 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1)));
114 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2)));
115 assertFalse(source.equals(target));
118 target.setInterfaceName(NAME);
119 target.addLinkAddress(new LinkAddress(
120 NetworkUtils.numericToInetAddress(ADDRV4), 32));
121 target.addLinkAddress(new LinkAddress(
122 NetworkUtils.numericToInetAddress(ADDRV6), 128));
123 target.addDns(NetworkUtils.numericToInetAddress(DNS1));
124 target.addDns(NetworkUtils.numericToInetAddress(DNS2));
126 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress("75.208.8.2")));
127 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2)));
128 assertFalse(source.equals(target));
130 } catch (Exception e) {
131 throw new RuntimeException(e.toString());
137 public void testEqualsDifferentOrder() {
139 LinkProperties source = new LinkProperties();
140 source.setInterfaceName(NAME);
141 // set 2 link addresses
142 source.addLinkAddress(new LinkAddress(
143 NetworkUtils.numericToInetAddress(ADDRV4), 32));
144 source.addLinkAddress(new LinkAddress(
145 NetworkUtils.numericToInetAddress(ADDRV6), 128));
147 source.addDns(NetworkUtils.numericToInetAddress(DNS1));
148 source.addDns(NetworkUtils.numericToInetAddress(DNS2));
150 source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1)));
151 source.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2)));
153 LinkProperties target = new LinkProperties();
155 target.setInterfaceName(NAME);
156 target.addLinkAddress(new LinkAddress(
157 NetworkUtils.numericToInetAddress(ADDRV6), 128));
158 target.addLinkAddress(new LinkAddress(
159 NetworkUtils.numericToInetAddress(ADDRV4), 32));
160 target.addDns(NetworkUtils.numericToInetAddress(DNS2));
161 target.addDns(NetworkUtils.numericToInetAddress(DNS1));
162 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY2)));
163 target.addRoute(new RouteInfo(NetworkUtils.numericToInetAddress(GATEWAY1)));
165 assertTrue(source.equals(target));
166 assertTrue(source.hashCode() == target.hashCode());
167 } catch (Exception e) {
173 public void testEqualsDuplicated() {
175 LinkProperties source = new LinkProperties();
176 // set 3 link addresses, eg, [A, A, B]
177 source.addLinkAddress(new LinkAddress(
178 NetworkUtils.numericToInetAddress(ADDRV4), 32));
179 source.addLinkAddress(new LinkAddress(
180 NetworkUtils.numericToInetAddress(ADDRV4), 32));
181 source.addLinkAddress(new LinkAddress(
182 NetworkUtils.numericToInetAddress(ADDRV6), 128));
184 LinkProperties target = new LinkProperties();
185 // set 3 link addresses, eg, [A, B, B]
186 target.addLinkAddress(new LinkAddress(
187 NetworkUtils.numericToInetAddress(ADDRV4), 32));
188 target.addLinkAddress(new LinkAddress(
189 NetworkUtils.numericToInetAddress(ADDRV6), 128));
190 target.addLinkAddress(new LinkAddress(
191 NetworkUtils.numericToInetAddress(ADDRV6), 128));
193 assertTrue(source.equals(target));
194 assertTrue(source.hashCode() == target.hashCode());
195 } catch (Exception e) {