1eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang/* 2eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * Copyright (C) 2016 The Android Open Source Project 3eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * 4eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 5eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * you may not use this file except in compliance with the License. 6eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * You may obtain a copy of the License at 7eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * 8eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * http://www.apache.org/licenses/LICENSE-2.0 9eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * 10eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * Unless required by applicable law or agreed to in writing, software 11eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS, 12eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * See the License for the specific language governing permissions and 14eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang * limitations under the License 15eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang */ 16eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhangpackage com.android.settingslib.wifi; 17eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang 189853743705603e0b5214e5995bea8c9267708813Dave Schaeferimport static com.google.common.truth.Truth.assertThat; 199853743705603e0b5214e5995bea8c9267708813Dave Schaeferimport static com.google.common.truth.Truth.assertWithMessage; 2071f4a82b51f53ba7b99fc7f1d1f81a29b7c88072Sundeep Ghuman 2121f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chenimport static org.mockito.Mockito.any; 2221f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chenimport static org.mockito.Mockito.when; 23ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu 24d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathurimport android.content.Context; 25d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathurimport android.net.ConnectivityManager; 26d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathurimport android.net.NetworkInfo; 2721f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chenimport android.net.ScoredNetwork; 28d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathurimport android.net.wifi.ScanResult; 29d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathurimport android.net.wifi.WifiConfiguration; 30d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathurimport android.net.wifi.WifiInfo; 3121f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chenimport android.net.wifi.WifiNetworkScoreCache; 32d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathurimport android.net.wifi.WifiSsid; 33ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiuimport android.net.wifi.hotspot2.PasspointConfiguration; 34ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiuimport android.net.wifi.hotspot2.pps.HomeSp; 35eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhangimport android.os.Bundle; 36d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathurimport android.os.SystemClock; 37eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhangimport android.support.test.InstrumentationRegistry; 38eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhangimport android.support.test.filters.SmallTest; 39eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhangimport android.support.test.runner.AndroidJUnit4; 40eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhangimport android.text.SpannableString; 41eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhangimport android.text.style.TtsSpan; 4271f4a82b51f53ba7b99fc7f1d1f81a29b7c88072Sundeep Ghuman 43d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathurimport org.junit.Before; 44eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhangimport org.junit.Test; 45eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhangimport org.junit.runner.RunWith; 4621f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chenimport org.mockito.Mock; 4721f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chenimport org.mockito.MockitoAnnotations; 48eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang 49d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathurimport java.util.ArrayList; 509853743705603e0b5214e5995bea8c9267708813Dave Schaeferimport java.util.Collections; 51eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang 52eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang@SmallTest 53eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang@RunWith(AndroidJUnit4.class) 54eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhangpublic class AccessPointTest { 55eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang 56eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang private static final String TEST_SSID = "test_ssid"; 57d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur private Context mContext; 5821f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen @Mock private WifiNetworkScoreCache mWifiNetworkScoreCache; 59d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur 60d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur @Before 61d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur public void setUp() { 6221f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen MockitoAnnotations.initMocks(this); 63d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur mContext = InstrumentationRegistry.getTargetContext(); 64d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur } 65eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang 66eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang @Test 67eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang public void testSsidIsTelephoneSpan() { 68eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang final Bundle bundle = new Bundle(); 69eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang bundle.putString("key_ssid", TEST_SSID); 70eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang final AccessPoint ap = new AccessPoint(InstrumentationRegistry.getTargetContext(), bundle); 71eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang final CharSequence ssid = ap.getSsid(); 72eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang 739853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(ssid instanceof SpannableString).isTrue(); 74eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang 75eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang TtsSpan[] spans = ((SpannableString) ssid).getSpans(0, TEST_SSID.length(), TtsSpan.class); 76eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang 779853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(spans.length).isEqualTo(1); 789853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(spans[0].getType()).isEqualTo(TtsSpan.TYPE_TELEPHONE); 79eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang } 80d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur 81d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur @Test 82d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur public void testCopyAccessPoint_dataShouldMatch() { 83d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur WifiConfiguration configuration = createWifiConfiguration(); 8421f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen configuration.meteredHint = true; 85d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur 86d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur NetworkInfo networkInfo = 87d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur new NetworkInfo(ConnectivityManager.TYPE_WIFI, 2, "WIFI", "WIFI_SUBTYPE"); 88d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur AccessPoint originalAccessPoint = new AccessPoint(mContext, configuration); 89d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur WifiInfo wifiInfo = new WifiInfo(); 90d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur wifiInfo.setSSID(WifiSsid.createFromAsciiEncoded(configuration.SSID)); 91d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur wifiInfo.setBSSID(configuration.BSSID); 92d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur originalAccessPoint.update(configuration, wifiInfo, networkInfo); 93d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur AccessPoint copy = new AccessPoint(mContext, originalAccessPoint); 94d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur 959853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(originalAccessPoint.getSsid().toString()).isEqualTo(copy.getSsid().toString()); 969853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(originalAccessPoint.getBssid()).isEqualTo(copy.getBssid()); 979853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(originalAccessPoint.getConfig()).isEqualTo(copy.getConfig()); 989853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(originalAccessPoint.getSecurity()).isEqualTo(copy.getSecurity()); 9921f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen assertThat(originalAccessPoint.isMetered()).isEqualTo(copy.isMetered()); 1009853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(originalAccessPoint.compareTo(copy) == 0).isTrue(); 101d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur } 102d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur 103d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur @Test 104d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur public void testThatCopyAccessPoint_scanCacheShouldMatch() { 10554bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman AccessPoint original = createAccessPointWithScanResultCache(); 1069853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(original.getRssi()).isEqualTo(4); 107d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur AccessPoint copy = new AccessPoint(mContext, createWifiConfiguration()); 10854bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman assertThat(copy.getRssi()).isEqualTo(AccessPoint.UNREACHABLE_RSSI); 109d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur copy.copyFrom(original); 1109853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(original.getRssi()).isEqualTo(copy.getRssi()); 1119853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 1129853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1139853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 1149853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testCompareTo_GivesActiveBeforeInactive() { 1159853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint activeAp = new TestAccessPointBuilder(mContext).setActive(true).build(); 1169853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint inactiveAp = new TestAccessPointBuilder(mContext).setActive(false).build(); 1179853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1189853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertSortingWorks(activeAp, inactiveAp); 1199853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 1209853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1219853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 1229853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testCompareTo_GivesReachableBeforeUnreachable() { 1239853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint nearAp = new TestAccessPointBuilder(mContext).setReachable(true).build(); 1249853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint farAp = new TestAccessPointBuilder(mContext).setReachable(false).build(); 1259853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1269853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertSortingWorks(nearAp, farAp); 1279853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 1289853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1299853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 1309853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testCompareTo_GivesSavedBeforeUnsaved() { 1319853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint savedAp = new TestAccessPointBuilder(mContext).setSaved(true).build(); 1329853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint notSavedAp = new TestAccessPointBuilder(mContext).setSaved(false).build(); 1339853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1349853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertSortingWorks(savedAp, notSavedAp); 1359853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 1369853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1379853743705603e0b5214e5995bea8c9267708813Dave Schaefer //TODO: add tests for mRankingScore sort order if ranking is exposed 1389853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1399853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 1409853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testCompareTo_GivesHighLevelBeforeLowLevel() { 1419853743705603e0b5214e5995bea8c9267708813Dave Schaefer final int highLevel = AccessPoint.SIGNAL_LEVELS - 1; 1429853743705603e0b5214e5995bea8c9267708813Dave Schaefer final int lowLevel = 1; 1439853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(highLevel).isGreaterThan(lowLevel); 1449853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1459853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint strongAp = new TestAccessPointBuilder(mContext).setLevel(highLevel).build(); 1469853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint weakAp = new TestAccessPointBuilder(mContext).setLevel(lowLevel).build(); 1479853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1489853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertSortingWorks(strongAp, weakAp); 1499853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 1509853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1519853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 1529853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testCompareTo_GivesSsidAlphabetically() { 1539853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1549853743705603e0b5214e5995bea8c9267708813Dave Schaefer final String firstName = "AAAAAA"; 1559853743705603e0b5214e5995bea8c9267708813Dave Schaefer final String secondName = "zzzzzz"; 1569853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1579853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint firstAp = new TestAccessPointBuilder(mContext).setSsid(firstName).build(); 1589853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint secondAp = new TestAccessPointBuilder(mContext).setSsid(secondName).build(); 1599853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1609853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(firstAp.getSsidStr().compareToIgnoreCase(secondAp.getSsidStr()) < 0).isTrue(); 1619853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertSortingWorks(firstAp, secondAp); 1629853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 1639853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1649853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 1659853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testCompareTo_AllSortingRulesCombined() { 1669853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1679853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint active = new TestAccessPointBuilder(mContext).setActive(true).build(); 1689853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint reachableAndMinLevel = new TestAccessPointBuilder(mContext) 1699853743705603e0b5214e5995bea8c9267708813Dave Schaefer .setReachable(true).build(); 1709853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint saved = new TestAccessPointBuilder(mContext).setSaved(true).build(); 1719853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint highLevelAndReachable = new TestAccessPointBuilder(mContext) 1729853743705603e0b5214e5995bea8c9267708813Dave Schaefer .setLevel(AccessPoint.SIGNAL_LEVELS - 1).build(); 1739853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint firstName = new TestAccessPointBuilder(mContext).setSsid("a").build(); 1749853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint lastname = new TestAccessPointBuilder(mContext).setSsid("z").build(); 1759853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1769853743705603e0b5214e5995bea8c9267708813Dave Schaefer ArrayList<AccessPoint> points = new ArrayList<AccessPoint>(); 1779853743705603e0b5214e5995bea8c9267708813Dave Schaefer points.add(lastname); 1789853743705603e0b5214e5995bea8c9267708813Dave Schaefer points.add(firstName); 1799853743705603e0b5214e5995bea8c9267708813Dave Schaefer points.add(highLevelAndReachable); 1809853743705603e0b5214e5995bea8c9267708813Dave Schaefer points.add(saved); 1819853743705603e0b5214e5995bea8c9267708813Dave Schaefer points.add(reachableAndMinLevel); 1829853743705603e0b5214e5995bea8c9267708813Dave Schaefer points.add(active); 1839853743705603e0b5214e5995bea8c9267708813Dave Schaefer 1849853743705603e0b5214e5995bea8c9267708813Dave Schaefer Collections.sort(points); 1859853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(points.indexOf(active)).isLessThan(points.indexOf(reachableAndMinLevel)); 1869853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(points.indexOf(reachableAndMinLevel)).isLessThan(points.indexOf(saved)); 1879853743705603e0b5214e5995bea8c9267708813Dave Schaefer // note: the saved AP will not appear before highLevelAndReachable, 1889853743705603e0b5214e5995bea8c9267708813Dave Schaefer // because all APs with a signal level are reachable, 1899853743705603e0b5214e5995bea8c9267708813Dave Schaefer // and isReachable() takes higher sorting precedence than isSaved(). 1909853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(points.indexOf(saved)).isLessThan(points.indexOf(firstName)); 1919853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(points.indexOf(highLevelAndReachable)).isLessThan(points.indexOf(firstName)); 1929853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(points.indexOf(firstName)).isLessThan(points.indexOf(lastname)); 193d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur } 194d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur 19554bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman @Test 19654bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman public void testRssiIsSetFromScanResults() { 19754bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman AccessPoint ap = createAccessPointWithScanResultCache(); 19854bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman int originalRssi = ap.getRssi(); 19954bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman assertThat(originalRssi).isNotEqualTo(AccessPoint.UNREACHABLE_RSSI); 20054bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman } 20154bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman 20254bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman @Test 20354bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman public void testGetRssiShouldReturnSetRssiValue() { 20454bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman AccessPoint ap = createAccessPointWithScanResultCache(); 20554bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman int originalRssi = ap.getRssi(); 20654bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman int newRssi = originalRssi - 10; 20754bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman ap.setRssi(newRssi); 20854bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman assertThat(ap.getRssi()).isEqualTo(newRssi); 20954bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman } 21054bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman 211ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman @Test 212ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman public void testUpdateWithScanResultShouldAverageRssi() { 213ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman String ssid = "ssid"; 214ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman int originalRssi = -65; 215ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman int newRssi = -80; 216ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman int expectedRssi = (originalRssi + newRssi) / 2; 217ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman AccessPoint ap = 218ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman new TestAccessPointBuilder(mContext).setSsid(ssid).setRssi(originalRssi).build(); 219ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman 220ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman ScanResult scanResult = new ScanResult(); 221ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman scanResult.SSID = ssid; 222ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman scanResult.level = newRssi; 223ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman scanResult.BSSID = "bssid"; 224ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman scanResult.timestamp = SystemClock.elapsedRealtime() * 1000; 225ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman scanResult.capabilities = ""; 226ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman assertThat(ap.update(scanResult)).isTrue(); 227ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman 228ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman assertThat(ap.getRssi()).isEqualTo(expectedRssi); 229ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman } 230ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman 231ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu @Test 232ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu public void testCreateFromPasspointConfig() { 233ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu PasspointConfiguration config = new PasspointConfiguration(); 234ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu HomeSp homeSp = new HomeSp(); 235ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu homeSp.setFqdn("test.com"); 236ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu homeSp.setFriendlyName("Test Provider"); 237ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu config.setHomeSp(homeSp); 238ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu AccessPoint ap = new AccessPoint(mContext, config); 239b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen assertThat(ap.isPasspointConfig()).isTrue(); 240ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu } 241ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu 24221f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen @Test 24321f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen public void testIsMetered_returnTrueWhenWifiConfigurationIsMetered() { 24421f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen WifiConfiguration configuration = createWifiConfiguration(); 24521f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen configuration.meteredHint = true; 24621f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen 24721f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen NetworkInfo networkInfo = 24821f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen new NetworkInfo(ConnectivityManager.TYPE_WIFI, 2, "WIFI", "WIFI_SUBTYPE"); 24921f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen AccessPoint accessPoint = new AccessPoint(mContext, configuration); 25021f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen WifiInfo wifiInfo = new WifiInfo(); 25121f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen wifiInfo.setSSID(WifiSsid.createFromAsciiEncoded(configuration.SSID)); 25221f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen wifiInfo.setBSSID(configuration.BSSID); 25321f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen wifiInfo.setNetworkId(configuration.networkId); 25421f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen accessPoint.update(configuration, wifiInfo, networkInfo); 25521f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen 256b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen assertThat(accessPoint.isMetered()).isTrue(); 257b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen } 25821f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen 25921f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen @Test 26021f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen public void testIsMetered_returnTrueWhenWifiInfoIsMetered() { 26121f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen WifiConfiguration configuration = createWifiConfiguration(); 26221f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen 26321f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen NetworkInfo networkInfo = 26421f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen new NetworkInfo(ConnectivityManager.TYPE_WIFI, 2, "WIFI", "WIFI_SUBTYPE"); 26521f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen AccessPoint accessPoint = new AccessPoint(mContext, configuration); 26621f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen WifiInfo wifiInfo = new WifiInfo(); 26721f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen wifiInfo.setSSID(WifiSsid.createFromAsciiEncoded(configuration.SSID)); 26821f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen wifiInfo.setBSSID(configuration.BSSID); 26921f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen wifiInfo.setNetworkId(configuration.networkId); 27021f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen wifiInfo.setMeteredHint(true); 27121f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen accessPoint.update(configuration, wifiInfo, networkInfo); 27221f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen 273b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen assertThat(accessPoint.isMetered()).isTrue(); 274b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen } 275b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen 276b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen @Test 277b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen public void testIsMetered_returnTrueWhenNetworkInfoIsMetered() { 278b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen WifiConfiguration configuration = createWifiConfiguration(); 279b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen 280b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen NetworkInfo networkInfo = 281b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen new NetworkInfo(ConnectivityManager.TYPE_WIFI, 2, "WIFI", "WIFI_SUBTYPE"); 282b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen networkInfo.setMetered(true); 283b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen AccessPoint accessPoint = new AccessPoint(mContext, configuration); 284b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen WifiInfo wifiInfo = new WifiInfo(); 285b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen wifiInfo.setSSID(WifiSsid.createFromAsciiEncoded(configuration.SSID)); 286b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen wifiInfo.setBSSID(configuration.BSSID); 287b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen wifiInfo.setNetworkId(configuration.networkId); 288b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen accessPoint.update(configuration, wifiInfo, networkInfo); 289b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen 290b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen assertThat(accessPoint.isMetered()).isTrue(); 291b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen } 29221f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen 29321f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen @Test 29421f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen public void testIsMetered_returnTrueWhenScoredNetworkIsMetered() { 29521f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen AccessPoint ap = createAccessPointWithScanResultCache(); 29621f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen 29721f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen when(mWifiNetworkScoreCache.getScoredNetwork(any(ScanResult.class))) 29821f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen .thenReturn( 29921f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen new ScoredNetwork( 30021f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen null /* NetworkKey */, 30121f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen null /* rssiCurve */, 30221f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen true /* metered */)); 30321f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen ap.update(mWifiNetworkScoreCache, false /* scoringUiEnabled */); 30421f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen 305b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen assertThat(ap.isMetered()).isTrue(); 306b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen } 307b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen 308b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen @Test 309b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen public void testIsMetered_returnFalseByDefault() { 310b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen WifiConfiguration configuration = createWifiConfiguration(); 311b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen 312b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen NetworkInfo networkInfo = 313b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen new NetworkInfo(ConnectivityManager.TYPE_WIFI, 2, "WIFI", "WIFI_SUBTYPE"); 314b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen AccessPoint accessPoint = new AccessPoint(mContext, configuration); 315b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen WifiInfo wifiInfo = new WifiInfo(); 316b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen wifiInfo.setSSID(WifiSsid.createFromAsciiEncoded(configuration.SSID)); 317b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen wifiInfo.setBSSID(configuration.BSSID); 318b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen wifiInfo.setNetworkId(configuration.networkId); 319b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen accessPoint.update(configuration, wifiInfo, networkInfo); 320b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen 321b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen assertThat(accessPoint.isMetered()).isFalse(); 322b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen } 32321f6868d8096ca2ff64cdb9fdc4457277d70bf07Stephen Chen 32454bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman private AccessPoint createAccessPointWithScanResultCache() { 32554bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman Bundle bundle = new Bundle(); 32654bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman ArrayList<ScanResult> scanResults = new ArrayList<>(); 32754bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman for (int i = 0; i < 5; i++) { 32854bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman ScanResult scanResult = new ScanResult(); 32954bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman scanResult.level = i; 33054bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman scanResult.BSSID = "bssid-" + i; 33154bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman scanResult.timestamp = SystemClock.elapsedRealtime() * 1000; 332ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman scanResult.capabilities = ""; 33354bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman scanResults.add(scanResult); 33454bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman } 33554bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman 33654bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman bundle.putParcelableArrayList("key_scanresultcache", scanResults); 33754bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman return new AccessPoint(mContext, bundle); 33854bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman } 33954bdcfa08180a69b852c8f71b39d30f0061ce6ffSundeep Ghuman 340d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur private WifiConfiguration createWifiConfiguration() { 341d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur WifiConfiguration configuration = new WifiConfiguration(); 342d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur configuration.BSSID = "bssid"; 343d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur configuration.SSID = "ssid"; 344d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur configuration.networkId = 123; 345d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur return configuration; 346d7b689aefcf7548ea0367622c76b4bda9f9833b2Ajay Nadathur } 3479853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3489853743705603e0b5214e5995bea8c9267708813Dave Schaefer /** 3499853743705603e0b5214e5995bea8c9267708813Dave Schaefer * Assert that the first AccessPoint appears after the second AccessPoint 3509853743705603e0b5214e5995bea8c9267708813Dave Schaefer * once sorting has been completed. 3519853743705603e0b5214e5995bea8c9267708813Dave Schaefer */ 3529853743705603e0b5214e5995bea8c9267708813Dave Schaefer private void assertSortingWorks(AccessPoint first, AccessPoint second) { 3539853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3549853743705603e0b5214e5995bea8c9267708813Dave Schaefer ArrayList<AccessPoint> points = new ArrayList<AccessPoint>(); 3559853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3569853743705603e0b5214e5995bea8c9267708813Dave Schaefer // add in reverse order so we can tell that sorting actually changed something 3579853743705603e0b5214e5995bea8c9267708813Dave Schaefer points.add(second); 3589853743705603e0b5214e5995bea8c9267708813Dave Schaefer points.add(first); 3599853743705603e0b5214e5995bea8c9267708813Dave Schaefer Collections.sort(points); 3609853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertWithMessage( 3619853743705603e0b5214e5995bea8c9267708813Dave Schaefer String.format("After sorting: second AccessPoint should have higher array index " 3629853743705603e0b5214e5995bea8c9267708813Dave Schaefer + "than the first, but found indicies second '%s' and first '%s'.", 3639853743705603e0b5214e5995bea8c9267708813Dave Schaefer points.indexOf(second), points.indexOf(first))) 3649853743705603e0b5214e5995bea8c9267708813Dave Schaefer .that(points.indexOf(second)).isGreaterThan(points.indexOf(first)); 3659853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 3669853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3679853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 3689853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testBuilder_setActive() { 3699853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint activeAp = new TestAccessPointBuilder(mContext).setActive(true).build(); 3709853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(activeAp.isActive()).isTrue(); 3719853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3729853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint inactiveAp = new TestAccessPointBuilder(mContext).setActive(false).build(); 3739853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(inactiveAp.isActive()).isFalse(); 3749853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 3759853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3769853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 3779853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testBuilder_setReachable() { 3789853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint nearAp = new TestAccessPointBuilder(mContext).setReachable(true).build(); 3799853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(nearAp.isReachable()).isTrue(); 3809853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3819853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint farAp = new TestAccessPointBuilder(mContext).setReachable(false).build(); 3829853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(farAp.isReachable()).isFalse(); 3839853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 3849853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3859853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 3869853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testBuilder_setSaved() { 3879853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint savedAp = new TestAccessPointBuilder(mContext).setSaved(true).build(); 3889853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(savedAp.isSaved()).isTrue(); 3899853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3909853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint newAp = new TestAccessPointBuilder(mContext).setSaved(false).build(); 3919853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(newAp.isSaved()).isFalse(); 3929853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 3939853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3949853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 3959853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testBuilder_setLevel() { 3969853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint testAp; 3979853743705603e0b5214e5995bea8c9267708813Dave Schaefer 3989853743705603e0b5214e5995bea8c9267708813Dave Schaefer for (int i = 0; i < AccessPoint.SIGNAL_LEVELS; i++) { 3999853743705603e0b5214e5995bea8c9267708813Dave Schaefer testAp = new TestAccessPointBuilder(mContext).setLevel(i).build(); 4009853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(testAp.getLevel()).isEqualTo(i); 4019853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 4029853743705603e0b5214e5995bea8c9267708813Dave Schaefer 4039853743705603e0b5214e5995bea8c9267708813Dave Schaefer // numbers larger than the max level should be set to max 4049853743705603e0b5214e5995bea8c9267708813Dave Schaefer testAp = new TestAccessPointBuilder(mContext).setLevel(AccessPoint.SIGNAL_LEVELS).build(); 4059853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(testAp.getLevel()).isEqualTo(AccessPoint.SIGNAL_LEVELS - 1); 4069853743705603e0b5214e5995bea8c9267708813Dave Schaefer 4079853743705603e0b5214e5995bea8c9267708813Dave Schaefer // numbers less than 0 should give level 0 4089853743705603e0b5214e5995bea8c9267708813Dave Schaefer testAp = new TestAccessPointBuilder(mContext).setLevel(-100).build(); 4099853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(testAp.getLevel()).isEqualTo(0); 4109853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 4119853743705603e0b5214e5995bea8c9267708813Dave Schaefer 4129853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 4139853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testBuilder_settingReachableAfterLevelDoesNotAffectLevel() { 4149853743705603e0b5214e5995bea8c9267708813Dave Schaefer int level = 1; 4159853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(level).isLessThan(AccessPoint.SIGNAL_LEVELS - 1); 4169853743705603e0b5214e5995bea8c9267708813Dave Schaefer 4179853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint testAp = 4189853743705603e0b5214e5995bea8c9267708813Dave Schaefer new TestAccessPointBuilder(mContext).setLevel(level).setReachable(true).build(); 4199853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(testAp.getLevel()).isEqualTo(level); 4209853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 4219853743705603e0b5214e5995bea8c9267708813Dave Schaefer 4229853743705603e0b5214e5995bea8c9267708813Dave Schaefer @Test 4239853743705603e0b5214e5995bea8c9267708813Dave Schaefer public void testBuilder_setSsid() { 4249853743705603e0b5214e5995bea8c9267708813Dave Schaefer String name = "AmazingSsid!"; 4259853743705603e0b5214e5995bea8c9267708813Dave Schaefer AccessPoint namedAp = new TestAccessPointBuilder(mContext).setSsid(name).build(); 4269853743705603e0b5214e5995bea8c9267708813Dave Schaefer assertThat(namedAp.getSsidStr()).isEqualTo(name); 4279853743705603e0b5214e5995bea8c9267708813Dave Schaefer } 428ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu 429ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu @Test 430ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu public void testBuilder_passpointConfig() { 431ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu String fqdn = "Test.com"; 432ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu String providerFriendlyName = "Test Provider"; 433ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu AccessPoint ap = new TestAccessPointBuilder(mContext).setFqdn(fqdn) 434ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu .setProviderFriendlyName(providerFriendlyName).build(); 435b5bcb8d4d60a4cc667b11448577b0c82e518008aStephen Chen assertThat(ap.isPasspointConfig()).isTrue(); 436ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu assertThat(ap.getPasspointFqdn()).isEqualTo(fqdn); 437ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu assertThat(ap.getConfigName()).isEqualTo(providerFriendlyName); 438ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu } 43996a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman 44096a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman @Test 44196a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman public void testUpdateNetworkInfo_returnsTrue() { 44296a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman int networkId = 123; 44396a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman int rssi = -55; 44496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman WifiConfiguration config = new WifiConfiguration(); 44596a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman config.networkId = networkId; 44696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman WifiInfo wifiInfo = new WifiInfo(); 44796a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman wifiInfo.setNetworkId(networkId); 44896a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman wifiInfo.setRssi(rssi); 44996a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman 45096a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman NetworkInfo networkInfo = 45196a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman new NetworkInfo(ConnectivityManager.TYPE_WIFI, 0 /* subtype */, "WIFI", ""); 45296a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTING, "", ""); 45396a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman 45496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman AccessPoint ap = new TestAccessPointBuilder(mContext) 45596a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman .setNetworkInfo(networkInfo) 45696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman .setNetworkId(networkId) 45796a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman .setRssi(rssi) 45896a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman .setWifiInfo(wifiInfo) 45996a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman .build(); 46096a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman 46196a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman NetworkInfo newInfo = new NetworkInfo(networkInfo); 46296a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman newInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, "", ""); 46396a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman assertThat(ap.update(config, wifiInfo, newInfo)).isTrue(); 46496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman } 46596a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman 46696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman @Test 46796a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman public void testUpdateNetworkInfoWithSameInfo_returnsFalse() { 46896a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman int networkId = 123; 46996a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman int rssi = -55; 47096a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman WifiConfiguration config = new WifiConfiguration(); 47196a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman config.networkId = networkId; 47296a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman WifiInfo wifiInfo = new WifiInfo(); 47396a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman wifiInfo.setNetworkId(networkId); 47496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman wifiInfo.setRssi(rssi); 47596a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman 47696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman NetworkInfo networkInfo = 47796a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman new NetworkInfo(ConnectivityManager.TYPE_WIFI, 0 /* subtype */, "WIFI", ""); 47896a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTING, "", ""); 47996a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman 48096a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman AccessPoint ap = new TestAccessPointBuilder(mContext) 48196a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman .setNetworkInfo(networkInfo) 48296a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman .setNetworkId(networkId) 48396a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman .setRssi(rssi) 48496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman .setWifiInfo(wifiInfo) 48596a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman .build(); 48696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman 48796a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman NetworkInfo newInfo = new NetworkInfo(networkInfo); // same values 48896a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman assertThat(ap.update(config, wifiInfo, newInfo)).isFalse(); 48996a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman } 490eb83a0d5019570b76cc248d419ddb14afc74eb85Fan Zhang} 491