LinkPropertiesTest.java revision 4e900091c4da26eb1c9f0d232ee0e50f4522cc69
1/*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
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
7 *
8 *      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.
15 */
16
17package android.net;
18
19import android.net.LinkProperties;
20import android.test.suitebuilder.annotation.SmallTest;
21import junit.framework.TestCase;
22
23import java.net.InetAddress;
24
25public class LinkPropertiesTest extends TestCase {
26    private static String ADDRV4 = "75.208.6.1";
27    private static String ADDRV6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
28    private static String DNS1 = "75.208.7.1";
29    private static String DNS2 = "69.78.7.1";
30    private static String GATEWAY1 = "75.208.8.1";
31    private static String GATEWAY2 = "69.78.8.1";
32    private static String NAME = "qmi0";
33
34    @SmallTest
35    public void testEqualsNull() {
36        LinkProperties source = new LinkProperties();
37        LinkProperties target = new LinkProperties();
38
39        assertFalse(source == target);
40        assertTrue(source.equals(target));
41        assertTrue(source.hashCode() == target.hashCode());
42    }
43
44    @SmallTest
45    public void testEqualsSameOrder() {
46        try {
47            LinkProperties source = new LinkProperties();
48            source.setInterfaceName(NAME);
49            // set 2 link addresses
50            source.addLinkAddress(new LinkAddress(
51                    NetworkUtils.numericToInetAddress(ADDRV4), 32));
52            source.addLinkAddress(new LinkAddress(
53                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
54            // set 2 dnses
55            source.addDns(NetworkUtils.numericToInetAddress(DNS1));
56            source.addDns(NetworkUtils.numericToInetAddress(DNS2));
57            // set 2 gateways
58            source.addGateway(NetworkUtils.numericToInetAddress(GATEWAY1));
59            source.addGateway(NetworkUtils.numericToInetAddress(GATEWAY2));
60
61            LinkProperties target = new LinkProperties();
62
63            // All fields are same
64            target.setInterfaceName(NAME);
65            target.addLinkAddress(new LinkAddress(
66                    NetworkUtils.numericToInetAddress(ADDRV4), 32));
67            target.addLinkAddress(new LinkAddress(
68                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
69            target.addDns(NetworkUtils.numericToInetAddress(DNS1));
70            target.addDns(NetworkUtils.numericToInetAddress(DNS2));
71            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY1));
72            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY2));
73
74            assertTrue(source.equals(target));
75            assertTrue(source.hashCode() == target.hashCode());
76
77            target.clear();
78            // change Interface Name
79            target.setInterfaceName("qmi1");
80            target.addLinkAddress(new LinkAddress(
81                    NetworkUtils.numericToInetAddress(ADDRV4), 32));
82            target.addLinkAddress(new LinkAddress(
83                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
84            target.addDns(NetworkUtils.numericToInetAddress(DNS1));
85            target.addDns(NetworkUtils.numericToInetAddress(DNS2));
86            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY1));
87            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY2));
88            assertFalse(source.equals(target));
89
90            target.clear();
91            target.setInterfaceName(NAME);
92            // change link addresses
93            target.addLinkAddress(new LinkAddress(
94                    NetworkUtils.numericToInetAddress("75.208.6.2"), 32));
95            target.addLinkAddress(new LinkAddress(
96                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
97            target.addDns(NetworkUtils.numericToInetAddress(DNS1));
98            target.addDns(NetworkUtils.numericToInetAddress(DNS2));
99            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY1));
100            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY2));
101            assertFalse(source.equals(target));
102
103            target.clear();
104            target.setInterfaceName(NAME);
105            target.addLinkAddress(new LinkAddress(
106                    NetworkUtils.numericToInetAddress(ADDRV4), 32));
107            target.addLinkAddress(new LinkAddress(
108                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
109            // change dnses
110            target.addDns(NetworkUtils.numericToInetAddress("75.208.7.2"));
111            target.addDns(NetworkUtils.numericToInetAddress(DNS2));
112            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY1));
113            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY2));
114            assertFalse(source.equals(target));
115
116            target.clear();
117            target.setInterfaceName(NAME);
118            target.addLinkAddress(new LinkAddress(
119                    NetworkUtils.numericToInetAddress(ADDRV4), 32));
120            target.addLinkAddress(new LinkAddress(
121                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
122            target.addDns(NetworkUtils.numericToInetAddress(DNS1));
123            target.addDns(NetworkUtils.numericToInetAddress(DNS2));
124            // change gateway
125            target.addGateway(NetworkUtils.numericToInetAddress("75.208.8.2"));
126            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY2));
127            assertFalse(source.equals(target));
128
129        } catch (Exception e) {
130            throw new RuntimeException(e.toString());
131            //fail();
132        }
133    }
134
135    @SmallTest
136    public void testEqualsDifferentOrder() {
137        try {
138            LinkProperties source = new LinkProperties();
139            source.setInterfaceName(NAME);
140            // set 2 link addresses
141            source.addLinkAddress(new LinkAddress(
142                    NetworkUtils.numericToInetAddress(ADDRV4), 32));
143            source.addLinkAddress(new LinkAddress(
144                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
145            // set 2 dnses
146            source.addDns(NetworkUtils.numericToInetAddress(DNS1));
147            source.addDns(NetworkUtils.numericToInetAddress(DNS2));
148            // set 2 gateways
149            source.addGateway(NetworkUtils.numericToInetAddress(GATEWAY1));
150            source.addGateway(NetworkUtils.numericToInetAddress(GATEWAY2));
151
152            LinkProperties target = new LinkProperties();
153            // Exchange order
154            target.setInterfaceName(NAME);
155            target.addLinkAddress(new LinkAddress(
156                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
157            target.addLinkAddress(new LinkAddress(
158                    NetworkUtils.numericToInetAddress(ADDRV4), 32));
159            target.addDns(NetworkUtils.numericToInetAddress(DNS2));
160            target.addDns(NetworkUtils.numericToInetAddress(DNS1));
161            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY2));
162            target.addGateway(NetworkUtils.numericToInetAddress(GATEWAY1));
163
164            assertTrue(source.equals(target));
165            assertTrue(source.hashCode() == target.hashCode());
166        } catch (Exception e) {
167            fail();
168        }
169    }
170
171    @SmallTest
172    public void testEqualsDuplicated() {
173        try {
174            LinkProperties source = new LinkProperties();
175            // set 3 link addresses, eg, [A, A, B]
176            source.addLinkAddress(new LinkAddress(
177                    NetworkUtils.numericToInetAddress(ADDRV4), 32));
178            source.addLinkAddress(new LinkAddress(
179                    NetworkUtils.numericToInetAddress(ADDRV4), 32));
180            source.addLinkAddress(new LinkAddress(
181                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
182
183            LinkProperties target = new LinkProperties();
184            // set 3 link addresses, eg, [A, B, B]
185            target.addLinkAddress(new LinkAddress(
186                    NetworkUtils.numericToInetAddress(ADDRV4), 32));
187            target.addLinkAddress(new LinkAddress(
188                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
189            target.addLinkAddress(new LinkAddress(
190                    NetworkUtils.numericToInetAddress(ADDRV6), 128));
191
192            assertTrue(source.equals(target));
193            assertTrue(source.hashCode() == target.hashCode());
194        } catch (Exception e) {
195            fail();
196        }
197    }
198
199}
200