1 /*
2  * Copyright (C) 2017 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 
17 package com.android.internal.telephony;
18 
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertNotEquals;
21 
22 import android.os.Parcel;
23 import android.telephony.AccessNetworkConstants.AccessNetworkType;
24 import android.telephony.AccessNetworkConstants.EutranBand;
25 import android.telephony.AccessNetworkConstants.GeranBand;
26 import android.telephony.NetworkScanRequest;
27 import android.telephony.RadioAccessSpecifier;
28 
29 import androidx.test.filters.SmallTest;
30 
31 import org.junit.Test;
32 
33 import java.util.ArrayList;
34 import java.util.List;
35 
36 /** Unit tests for {@link NetworkScanRequest}. */
37 public class NetworkScanRequestTest {
38 
39     @Test
40     @SmallTest
testParcel()41     public void testParcel() {
42         NetworkScanRequest nsq = createNetworkScanRequest();
43 
44         Parcel p = Parcel.obtain();
45         nsq.writeToParcel(p, 0);
46         p.setDataPosition(0);
47 
48         NetworkScanRequest newNsq = NetworkScanRequest.CREATOR.createFromParcel(p);
49         assertEquals(nsq, newNsq);
50     }
51 
52     @Test
53     @SmallTest
testEquals_identity_allFieldsNonNull()54     public void testEquals_identity_allFieldsNonNull() {
55         NetworkScanRequest nsq = createNetworkScanRequest();
56 
57         assertEquals(nsq, nsq);
58     }
59 
60     @Test
61     @SmallTest
testEquals_identify_nullRadioAccessSpecifiers()62     public void testEquals_identify_nullRadioAccessSpecifiers() {
63         NetworkScanRequest nsq = createNetworkScanRequest(null, List.of("310480"));
64 
65         assertEquals(nsq, nsq);
66     }
67 
68     @Test
69     @SmallTest
testEquals_identify_emptyRadioAccessSpecifiers()70     public void testEquals_identify_emptyRadioAccessSpecifiers() {
71         NetworkScanRequest nsq = createNetworkScanRequest(new RadioAccessSpecifier[]{},
72                 List.of("310480"));
73 
74         assertEquals(nsq, nsq);
75     }
76 
77     @Test
78     @SmallTest
testEquals_identify_nullPlmns()79     public void testEquals_identify_nullPlmns() {
80         NetworkScanRequest nsq = createNetworkScanRequest(new RadioAccessSpecifier[]{
81                 new RadioAccessSpecifier(AccessNetworkType.GERAN, null, null)}, null);
82 
83         assertEquals(nsq, nsq);
84     }
85 
86     @Test
87     @SmallTest
testEquals_identify_emptyPlmns()88     public void testEquals_identify_emptyPlmns() {
89         NetworkScanRequest nsq = createNetworkScanRequest(new RadioAccessSpecifier[]{
90                 new RadioAccessSpecifier(AccessNetworkType.GERAN, null, null)}, List.of());
91 
92         assertEquals(nsq, nsq);
93     }
94 
95     @Test
96     @SmallTest
testEquals_identify_nullRasAndPlmns()97     public void testEquals_identify_nullRasAndPlmns() {
98         NetworkScanRequest nsq = createNetworkScanRequest(null, null);
99 
100         assertEquals(nsq, nsq);
101     }
102 
103     @Test
104     @SmallTest
testEquals_sameValues_allFieldsNonNull()105     public void testEquals_sameValues_allFieldsNonNull() {
106         NetworkScanRequest nsq1 = createNetworkScanRequest();
107         NetworkScanRequest nsq2 = createNetworkScanRequest();
108 
109         assertEquals(nsq1, nsq2);
110     }
111 
112     @Test
113     @SmallTest
testEquals_sameValues_nullRadioAccessSpecifiers()114     public void testEquals_sameValues_nullRadioAccessSpecifiers() {
115         NetworkScanRequest nsq1 = createNetworkScanRequest(null, List.of("310480"));
116         NetworkScanRequest nsq2 = createNetworkScanRequest(null, List.of("310480"));
117 
118         assertEquals(nsq1, nsq2);
119     }
120 
121     @Test
122     @SmallTest
testEquals_sameValues_emptyRadioAccessSpecifiers()123     public void testEquals_sameValues_emptyRadioAccessSpecifiers() {
124         NetworkScanRequest nsq1 = createNetworkScanRequest(new RadioAccessSpecifier[]{},
125                 List.of("310480"));
126         NetworkScanRequest nsq2 = createNetworkScanRequest(new RadioAccessSpecifier[]{},
127                 List.of("310480"));
128 
129         assertEquals(nsq1, nsq2);
130     }
131 
132     @Test
133     @SmallTest
testEquals_sameValues_nullPlmns()134     public void testEquals_sameValues_nullPlmns() {
135         NetworkScanRequest nsq1 = createNetworkScanRequest(new RadioAccessSpecifier[]{
136                 new RadioAccessSpecifier(AccessNetworkType.GERAN, null, null)}, null);
137         NetworkScanRequest nsq2 = createNetworkScanRequest(new RadioAccessSpecifier[]{
138                 new RadioAccessSpecifier(AccessNetworkType.GERAN, null, null)}, null);
139 
140         assertEquals(nsq1, nsq2);
141     }
142 
143     @Test
144     @SmallTest
testEquals_sameValues_emptyPlmns()145     public void testEquals_sameValues_emptyPlmns() {
146         NetworkScanRequest nsq1 = createNetworkScanRequest(new RadioAccessSpecifier[]{
147                 new RadioAccessSpecifier(AccessNetworkType.GERAN, null, null)}, List.of());
148         NetworkScanRequest nsq2 = createNetworkScanRequest(new RadioAccessSpecifier[]{
149                 new RadioAccessSpecifier(AccessNetworkType.GERAN, null, null)}, List.of());
150 
151         assertEquals(nsq1, nsq2);
152     }
153 
154     @Test
155     @SmallTest
testEquals_sameValues_nullRasAndPlmns()156     public void testEquals_sameValues_nullRasAndPlmns() {
157         NetworkScanRequest nsq1 = createNetworkScanRequest(null, null);
158         NetworkScanRequest nsq2 = createNetworkScanRequest(null, null);
159 
160         assertEquals(nsq1, nsq2);
161     }
162 
163     @Test
164     @SmallTest
testEquals_plmnsInDifferentOrder_shouldNotEqual()165     public void testEquals_plmnsInDifferentOrder_shouldNotEqual() {
166         NetworkScanRequest nsq1 = createNetworkScanRequest(null, List.of("123456", "987654"));
167         NetworkScanRequest nsq2 = createNetworkScanRequest(null, List.of("987654", "123456"));
168 
169         assertNotEquals(nsq1, nsq2);
170     }
171 
createNetworkScanRequest()172     private NetworkScanRequest createNetworkScanRequest() {
173         int ranGsm = AccessNetworkType.GERAN;
174         int[] gsmBands = {GeranBand.BAND_T380, GeranBand.BAND_T410};
175         int[] gsmChannels = {1, 2, 3, 4};
176         RadioAccessSpecifier gsm = new RadioAccessSpecifier(ranGsm, gsmBands, gsmChannels);
177         int ranLte = AccessNetworkType.EUTRAN;
178         int[] lteBands = {EutranBand.BAND_10, EutranBand.BAND_11};
179         int[] lteChannels = {5, 6, 7, 8};
180         RadioAccessSpecifier lte = new RadioAccessSpecifier(ranLte, lteBands, lteChannels);
181         RadioAccessSpecifier[] ras = {gsm, lte};
182 
183         int searchPeriodicity = 70;
184         int maxSearchTime = 200;
185         boolean incrementalResults = true;
186         int incrementalResultsPeriodicity = 7;
187 
188         ArrayList<String> mccmncs = new ArrayList<String>();
189         mccmncs.add("310480");
190         mccmncs.add("21002");
191 
192         return new NetworkScanRequest(NetworkScanRequest.SCAN_TYPE_ONE_SHOT, ras,
193                 searchPeriodicity, maxSearchTime, incrementalResults,
194                 incrementalResultsPeriodicity, mccmncs);
195     }
196 
createNetworkScanRequest( RadioAccessSpecifier[] radioAccessSpecifiers, List<String> plmns)197     private NetworkScanRequest createNetworkScanRequest(
198             RadioAccessSpecifier[] radioAccessSpecifiers, List<String> plmns) {
199         int searchPeriodicity = 70;
200         int maxSearchTime = 200;
201         boolean incrementalResults = true;
202         int incrementalResultsPeriodicity = 7;
203 
204         return new NetworkScanRequest(NetworkScanRequest.SCAN_TYPE_ONE_SHOT, radioAccessSpecifiers,
205                 searchPeriodicity, maxSearchTime, incrementalResults,
206                 incrementalResultsPeriodicity, plmns != null ? new ArrayList<>(plmns) : null);
207     }
208 }
209