1297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills/* 2297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * Copyright (C) 2015 The Android Open Source Project 3297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * 4297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * Licensed under the Apache License, Version 2.0 (the "License"); 5297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * you may not use this file except in compliance with the License. 6297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * You may obtain a copy of the License at 7297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * 8297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * http://www.apache.org/licenses/LICENSE-2.0 9297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * 10297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * Unless required by applicable law or agreed to in writing, software 11297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * distributed under the License is distributed on an "AS IS" BASIS, 12297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills * See the License for the specific language governing permissions and 1495984d1af44a00183a4b0e0ed61417583096ff90Mitchell Wills * limitations under the License. 15297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills */ 16297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 1795984d1af44a00183a4b0e0ed61417583096ff90Mitchell Willspackage com.android.server.wifi.scanner; 18297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 19297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static com.android.server.wifi.ScanTestUtil.channelsToSpec; 20297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static com.android.server.wifi.ScanTestUtil.createRequest; 21297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static com.android.server.wifi.ScanTestUtil.createScanDatas; 22297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport static com.android.server.wifi.ScanTestUtil.createScanResult; 23297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 2472c639e8b97067e948eca8be50dfea3173121090Mitchell Willsimport static org.junit.Assert.assertEquals; 2572c639e8b97067e948eca8be50dfea3173121090Mitchell Willsimport static org.junit.Assert.assertFalse; 2672c639e8b97067e948eca8be50dfea3173121090Mitchell Willsimport static org.junit.Assert.assertNotNull; 2772c639e8b97067e948eca8be50dfea3173121090Mitchell Willsimport static org.junit.Assert.assertNull; 2872c639e8b97067e948eca8be50dfea3173121090Mitchell Willsimport static org.junit.Assert.assertTrue; 29297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 30297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport android.net.wifi.WifiScanner; 31297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport android.net.wifi.WifiScanner.ScanData; 32297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport android.net.wifi.WifiScanner.ScanSettings; 33297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport android.test.suitebuilder.annotation.SmallTest; 34297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 35297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport org.junit.Before; 36297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Willsimport org.junit.Test; 37297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 38297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills/** 3995984d1af44a00183a4b0e0ed61417583096ff90Mitchell Wills * Unit tests for filtering of scan results in 404e54617758f86acef751bc8588257a58ed985b0fMitchell Wills * {@link com.android.server.wifi.scanner.ScanScheduleUtil}. 41297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills */ 42297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills@SmallTest 434e54617758f86acef751bc8588257a58ed985b0fMitchell Willspublic class ScanScheduleUtilFilterTest { 44297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 454e54617758f86acef751bc8588257a58ed985b0fMitchell Wills private ChannelHelper mChannelHelper; 46297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 47297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Before 48297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills public void setUp() throws Exception { 494e54617758f86acef751bc8588257a58ed985b0fMitchell Wills mChannelHelper = new PresetKnownBandsChannelHelper( 50297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills new int[]{2400, 2450}, 51297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills new int[]{5150, 5175}, 52297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills new int[]{5600, 5650}); 5394bd575cb4766ed0dfbaad0fc7719a9e9e85a260Mitchell Wills } 5494bd575cb4766ed0dfbaad0fc7719a9e9e85a260Mitchell Wills 55297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 56c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void reportFullResultTrueForBandsWithNoBucketInfo() { 57297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 58297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.WIFI_BAND_24_GHZ, 30000, 0, 20, 59297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 60297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 61297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 624e54617758f86acef751bc8588257a58ed985b0fMitchell Wills assertTrue(ScanScheduleUtil.shouldReportFullScanResultForSettings(mChannelHelper, 63c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills createScanResult(2400), 0, settings, -1)); 64297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 65297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 66297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 67c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void reportFullResultFalseForBandsWithNoBucketInfo() { 68297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 69297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.WIFI_BAND_24_GHZ, 30000, 0, 20, 70297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 71297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 72297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 734e54617758f86acef751bc8588257a58ed985b0fMitchell Wills assertFalse(ScanScheduleUtil.shouldReportFullScanResultForSettings(mChannelHelper, 74f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills createScanResult(5150), 0, settings, 0)); 75297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 76297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 77297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 78c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void reportFullResultTrueForChannelsWithNoBucketInfo() { 79297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 80297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 81297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 82297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 83297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 844e54617758f86acef751bc8588257a58ed985b0fMitchell Wills assertTrue(ScanScheduleUtil.shouldReportFullScanResultForSettings(mChannelHelper, 85f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills createScanResult(2400), 0, settings, 0)); 86297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 87297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 88297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 89c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void reportFullResultFalseForChannelsWithNoBucketInfo() { 90297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 91297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 92297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 93297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 94297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 954e54617758f86acef751bc8588257a58ed985b0fMitchell Wills assertFalse(ScanScheduleUtil.shouldReportFullScanResultForSettings(mChannelHelper, 96f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills createScanResult(5175), 0, settings, 0)); 97297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 98297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 99297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 100c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void reportFullResultTrueForChannelsWithBucketDefinitlyScanned() { 101c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ScanSettings settings = createRequest( 102c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 103c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 104c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ); 105c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 106c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills assertTrue(ScanScheduleUtil.shouldReportFullScanResultForSettings(mChannelHelper, 107c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills createScanResult(2400), 5, settings, 2)); 108c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills } 109c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 110c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills @Test 111c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void reportFullResultFalseForChannelsWithBucketDefinitlyNotScanned() { 112c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ScanSettings settings = createRequest( 113c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 114c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 115c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ); 116c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 117c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills assertFalse(ScanScheduleUtil.shouldReportFullScanResultForSettings(mChannelHelper, 118c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills createScanResult(2400), 1, settings, 1)); 119c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills } 120c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 121c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills @Test 122c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataEmptyWithNoBucketInfo() { 123297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 124297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 125297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 126297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 127297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 1284e54617758f86acef751bc8588257a58ed985b0fMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 129c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills new ScanData[0], settings, -1); 130297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(null, results); 131297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 132297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 133297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 134c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataSingleNotMatchingWithNoBucketInfo() { 135297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 136297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 137297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 138297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 139297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 1404e54617758f86acef751bc8588257a58ed985b0fMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 141f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills createScanDatas(new int[][]{ { 2450 } }), settings, 0); 142297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(null, results); 143297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 144297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 145297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 146f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills public void filterScanDataSingleNotMatchingWithDefinitlyScannedBucketIndex() { 147f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills ScanSettings settings = createRequest( 148f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 149f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 150f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills ); 151f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills 152f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 153f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills createScanDatas(new int[][]{ { 2450 } }), settings, -1); 154f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills assertScanDataFreqsEquals(new int[][]{ { } }, results); 155f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills } 156f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills 157f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills @Test 158c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataSingleNotMatchingWithBucketDefinitlyScanned() { 159297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 160297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 161297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 162297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 163297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 1644e54617758f86acef751bc8588257a58ed985b0fMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 165c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills createScanDatas(new int[][]{ { 2450 } }, new int[]{ 2 }), settings, 1); 166c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { } }, results); 167c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills } 168c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 169c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills @Test 170c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataSingleMatchingWithNoBucketInfo() { 171c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ScanSettings settings = createRequest( 172c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 173c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 174c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ); 175c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 176c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 177f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills createScanDatas(new int[][]{ { 2400 } }), settings, 0); 178297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 179297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400 } }, results); 180297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 181297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 182297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 183c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataSingleMatchingWithBucketDefinitlyNotScanned() { 184297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 185297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 186297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 187297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 188297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 1894e54617758f86acef751bc8588257a58ed985b0fMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 190c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills createScanDatas(new int[][]{ { 2400 } }, new int[] { 5 }), settings, 1); 191c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 192c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills assertScanDataFreqsEquals(null, results); 193c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills } 194c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 195c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills @Test 196c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataSinglePartialMatchingWithNoBucketInfo() { 197c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ScanSettings settings = createRequest( 198c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 199c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 200c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ); 201c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 202c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 203f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills createScanDatas(new int[][]{ { 2400, 2450, 5150, 5175 } }), settings, 0); 204297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 205297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400, 5150 } }, results); 206297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 207297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 208297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 209c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataMultipleNotMatchingWithNoBucketInfo() { 210297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 211297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 212297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 213297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 214297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 2154e54617758f86acef751bc8588257a58ed985b0fMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 216f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills createScanDatas(new int[][]{ { 2450 }, { 2450, 5175 } }), settings, 0); 217297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(null, results); 218297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 219297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 220297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 221c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataMultipleNotMatchingWithOneDefinitlyScanned() { 222c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ScanSettings settings = createRequest( 223c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 224c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 225c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ); 226c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 227c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 228c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills createScanDatas(new int[][]{ { 2450 }, { 2450, 5175 } }, new int[]{ 1, 8 }), 229c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills settings, 3); 230c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills assertScanDataFreqsEquals(new int[][]{ {} }, results); 231c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills } 232c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills 233c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills @Test 234c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataMultipleMatchingWithNoBucketInfo() { 235297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 236297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 237297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 238297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 239297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 2404e54617758f86acef751bc8588257a58ed985b0fMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 241f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills createScanDatas(new int[][]{ { 2400 }, {2400, 5150} }), settings, 0); 242297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 243297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400 }, {2400, 5150} }, results); 244297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 245297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 246297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 247c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataMultiplePartialMatchingWithNoBucketInfo() { 248297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 249297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 250297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 251297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 252297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 2534e54617758f86acef751bc8588257a58ed985b0fMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 2544e54617758f86acef751bc8588257a58ed985b0fMitchell Wills createScanDatas(new int[][]{ { 2400, 2450, 5150, 5175 }, { 2400, 2450, 5175 } }), 255c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills settings, -1); 256297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 257297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400, 5150 }, { 2400 } }, results); 258297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 259297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 260297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 261c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataMultipleDuplicateFrequenciesWithNoBucketInfo() { 262297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 263297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 264297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 265297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 266297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 2674e54617758f86acef751bc8588257a58ed985b0fMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 2684e54617758f86acef751bc8588257a58ed985b0fMitchell Wills createScanDatas(new int[][]{ 2694e54617758f86acef751bc8588257a58ed985b0fMitchell Wills { 2400, 2450, 5150, 5175, 2400 }, 2704e54617758f86acef751bc8588257a58ed985b0fMitchell Wills { 2400, 2450, 5175 }, 271f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills { 5175, 5175, 5150 } }), settings, 0); 272297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 273297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400, 5150, 2400 }, { 2400 }, { 5150 } }, results); 274297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 275297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 276297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills @Test 277c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataMultipleSomeNotMatchingWithNoBucketInfo() { 278297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ScanSettings settings = createRequest( 279297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 20, 280297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 281297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills ); 282297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 2834e54617758f86acef751bc8588257a58ed985b0fMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 2844e54617758f86acef751bc8588257a58ed985b0fMitchell Wills createScanDatas(new int[][]{ 2854e54617758f86acef751bc8588257a58ed985b0fMitchell Wills { 2400, 2450, 5150, 5175, 2400 }, 2864e54617758f86acef751bc8588257a58ed985b0fMitchell Wills { 5175 }, 287f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills { 5175, 5175, 5150 } }), settings, 0); 288297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 289297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400, 5150, 2400 }, { 5150 } }, results); 290297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 291297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 2921a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills @Test 293c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills public void filterScanDataExceedMaxBssidsPerScanWithNoBucketInfo() { 2941a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills ScanSettings settings = createRequest( 2951a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills channelsToSpec(2400, 5150), 30000, 0, 3, 2961a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT 2971a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills ); 2981a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills 2994e54617758f86acef751bc8588257a58ed985b0fMitchell Wills ScanData[] results = ScanScheduleUtil.filterResultsForSettings(mChannelHelper, 3004e54617758f86acef751bc8588257a58ed985b0fMitchell Wills createScanDatas(new int[][]{ 3014e54617758f86acef751bc8588257a58ed985b0fMitchell Wills { 2400, 2450, 5150, 5175, 2400, 2400}, 3024e54617758f86acef751bc8588257a58ed985b0fMitchell Wills { 5175 }, 303f5cdd8e7a6b7d4c0b5f77134273c7e894d8c087bMitchell Wills { 5175, 5175, 5150, 2400, 2400, 5150 } }), settings, 0); 3041a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills 3051a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills assertScanDataFreqsEquals(new int[][]{ { 2400, 5150, 2400 }, { 5150, 2400, 2400 } }, 3061a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills results); 3071a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills } 3081a16020f8d611c94797884b212ee6a26817fad82Mitchell Wills 309297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills 3104e54617758f86acef751bc8588257a58ed985b0fMitchell Wills private static void assertScanDataFreqsEquals(int[][] expected, ScanData[] results) { 311297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills if (expected == null) { 312c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills assertNull("Expected no results", results); 313297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } else { 314c4f23cbd6de85cbffcd91b398e51eff106ef08d4Mitchell Wills assertNotNull("Expected some results", results); 315297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertEquals("num scans", expected.length, results.length); 316297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills for (int i = 0; i < expected.length; ++i) { 317297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertNotNull("scan[" + i + "] was null", results[i]); 318297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertEquals("num aps in scan[" + i + "]", expected[i].length, 319297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills results[i].getResults().length); 320297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills for (int j = 0; j < expected[i].length; ++j) { 321297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertNotNull("ap result[" + i + "][" + j + "] was null", 322297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills results[i].getResults()[j]); 323297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills assertEquals("ap freq in result[" + i + "][" + j + "]", expected[i][j], 324297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills results[i].getResults()[j].frequency); 325297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 326297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 327297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 328297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills } 329297c3acabe7a85eb87240fe3ccf772e57ce6aef7Mitchell Wills} 330