1712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills/* 2712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Copyright (C) 2016 The Android Open Source Project 3712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * 4712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Licensed under the Apache License, Version 2.0 (the "License"); 5712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * you may not use this file except in compliance with the License. 6712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * You may obtain a copy of the License at 7712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * 8712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * http://www.apache.org/licenses/LICENSE-2.0 9712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * 10712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Unless required by applicable law or agreed to in writing, software 11712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * distributed under the License is distributed on an "AS IS" BASIS, 12712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * See the License for the specific language governing permissions and 14712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * limitations under the License. 15712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 16712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 17712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willspackage com.android.server.wifi.scanner; 18712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 19712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willsimport static com.android.server.wifi.ScanTestUtil.bandIs; 20712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willsimport static com.android.server.wifi.ScanTestUtil.channelsAre; 2139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Willsimport static com.android.server.wifi.ScanTestUtil.channelsToSpec; 2239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Willsimport static com.android.server.wifi.ScanTestUtil.createRequest; 23712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 24712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willsimport static org.hamcrest.MatcherAssert.assertThat; 2539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Willsimport static org.junit.Assert.assertEquals; 2639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Willsimport static org.junit.Assert.assertFalse; 2739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Willsimport static org.junit.Assert.assertNull; 2839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Willsimport static org.junit.Assert.assertTrue; 29712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 30712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willsimport android.net.wifi.WifiScanner; 31712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willsimport android.test.suitebuilder.annotation.SmallTest; 32712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 33712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willsimport com.android.server.wifi.WifiNative; 34712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 35712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willsimport org.junit.Before; 36712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willsimport org.junit.Test; 37712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willsimport org.junit.experimental.runners.Enclosed; 38712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willsimport org.junit.runner.RunWith; 39712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 4039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Willsimport java.util.Arrays; 4139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Willsimport java.util.Collections; 4239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Willsimport java.util.HashSet; 4339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 44712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills/** 45712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Unit tests for {@link com.android.server.wifi.scanner.NoBandChannelHelper}. 46712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 47712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills@RunWith(Enclosed.class) // WARNING: tests cannot be declared in the outer class 48712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Willspublic class NoBandChannelHelperTest { 49712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills private static final int ALL_BANDS = WifiScanner.WIFI_BAND_BOTH_WITH_DFS; 50712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 51712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 52712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Unit tests for 53798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * {@link com.android.server.wifi.scanner.NoBandChannelHelper.estimateScanDuration}. 54798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills */ 5528345f81bf3f95e25946d398d594f39141c41442Mitchell Wills @SmallTest 56798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills public static class EstimateScanDurationTest { 57798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills NoBandChannelHelper mChannelHelper; 58798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 59798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills /** 60798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * Called before each test 61798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * Create a channel helper 62798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills */ 63798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills @Before 64798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills public void setUp() throws Exception { 65798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills mChannelHelper = new NoBandChannelHelper(); 66798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills } 67798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 68798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills /** 69798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * check a settings object with a few channels 70798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills */ 71798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills @Test 72798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills public void fewChannels() { 73798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills WifiScanner.ScanSettings testSettings = createRequest(channelsToSpec(2400, 2450, 5100), 74798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN); 75798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 76798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills assertEquals(ChannelHelper.SCAN_PERIOD_PER_CHANNEL_MS * 3, 77798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills mChannelHelper.estimateScanDuration(testSettings)); 78798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills } 79798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 80798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills /** 81798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * check a settings object with a band 82798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills */ 83798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills @Test 84798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills public void band() { 85798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills WifiScanner.ScanSettings testSettings = createRequest(WifiScanner.WIFI_BAND_24_GHZ, 86798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN); 87798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 88798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills assertTrue("Expected scan to take some time", 89798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills mChannelHelper.estimateScanDuration(testSettings) 90798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills >= ChannelHelper.SCAN_PERIOD_PER_CHANNEL_MS); 91798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills } 92798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills } 93798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 94798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills /** 95798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * Unit tests for 96798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * {@link com.android.server.wifi.scanner.NoBandChannelHelper.getAvailableScanChannels}. 97798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills */ 9828345f81bf3f95e25946d398d594f39141c41442Mitchell Wills @SmallTest 99798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills public static class GetAvailableScanChannelsTest { 100798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills NoBandChannelHelper mChannelHelper; 101798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 102798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills /** 103798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * Called before each test 104798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * Create a channel helper 105798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills */ 106798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills @Before 107798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills public void setUp() throws Exception { 108798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills mChannelHelper = new NoBandChannelHelper(); 109798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills } 110798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 111798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills /** 112798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * Test that getting the channels for each band results in the expected empty list 113798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills */ 114798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills @Test 115798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills public void eachBandValue() { 116798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills for (int band = WifiScanner.WIFI_BAND_24_GHZ; 117798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills band <= WifiScanner.WIFI_BAND_BOTH_WITH_DFS; ++band) { 118798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills WifiScanner.ChannelSpec[] channels = 119798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills mChannelHelper.getAvailableScanChannels(band); 120798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills assertEquals("expected zero channels", 0, channels.length); 121798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills } 122798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills } 123798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills } 124798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills 125798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills /** 126798a997d2e5bf8b3278bfeaa7ca841394e2db4b9Mitchell Wills * Unit tests for 12739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills * {@link com.android.server.wifi.scanner.NoBandChannelHelper.settingsContainChannel}. 12839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills */ 12928345f81bf3f95e25946d398d594f39141c41442Mitchell Wills @SmallTest 13039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills public static class SettingsContainChannelTest { 13139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills NoBandChannelHelper mChannelHelper; 13239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 13339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills /** 13439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills * Called before each test 13539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills * Create a channel helper 13639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills */ 13739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills @Before 13839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills public void setUp() throws Exception { 13939175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills mChannelHelper = new NoBandChannelHelper(); 14039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills } 14139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 14239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills /** 14339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills * check a settings object with no channels 14439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills */ 14539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills @Test 14639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills public void emptySettings() { 14739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills WifiScanner.ScanSettings testSettings = createRequest(channelsToSpec(), 14839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN); 14939175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 15039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelHelper.settingsContainChannel(testSettings, 2400)); 15139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelHelper.settingsContainChannel(testSettings, 5150)); 15239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelHelper.settingsContainChannel(testSettings, 5650)); 15339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills } 15439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 15539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills /** 15639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills * check a settings object with some channels 15739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills */ 15839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills @Test 15939175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills public void settingsWithChannels() { 16039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills WifiScanner.ScanSettings testSettings = createRequest(channelsToSpec(2400, 5650), 16139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN); 16239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 16339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelHelper.settingsContainChannel(testSettings, 2400)); 16439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelHelper.settingsContainChannel(testSettings, 5150)); 16539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelHelper.settingsContainChannel(testSettings, 5650)); 16639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills } 16739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 16839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills /** 16939175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills * check a settings object with a band specified 17039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills */ 17139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills @Test 17239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills public void settingsWithBand() { 17339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills WifiScanner.ScanSettings testSettings = createRequest(WifiScanner.WIFI_BAND_24_GHZ, 17439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN); 17539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 17639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelHelper.settingsContainChannel(testSettings, 2400)); 17739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelHelper.settingsContainChannel(testSettings, 2450)); 17839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelHelper.settingsContainChannel(testSettings, 5150)); 17939175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelHelper.settingsContainChannel(testSettings, 5650)); 18039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills } 18139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 18239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills /** 18339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills * check a settings object with multiple bands specified 18439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills */ 18539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills @Test 18639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills public void settingsWithMultiBand() { 18739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills WifiScanner.ScanSettings testSettings = createRequest(WifiScanner.WIFI_BAND_BOTH, 18839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN); 18939175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 19039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelHelper.settingsContainChannel(testSettings, 2400)); 19139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelHelper.settingsContainChannel(testSettings, 2450)); 19239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelHelper.settingsContainChannel(testSettings, 5150)); 19339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelHelper.settingsContainChannel(testSettings, 5650)); 19439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills } 19539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills } 19639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 19739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills /** 19839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills * Unit tests for 199712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * {@link com.android.server.wifi.scanner.NoBandChannelHelper.NoBandChannelCollection}. 200712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 20128345f81bf3f95e25946d398d594f39141c41442Mitchell Wills @SmallTest 2023219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills public static class NoBandsChannelCollectionTest { 203712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills ChannelHelper.ChannelCollection mChannelCollection; 204712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 205712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 206712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Called before each test 207712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Create a collection to use for each test 208712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 209712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills @Before 210712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills public void setUp() throws Exception { 211712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection = new NoBandChannelHelper().createChannelCollection(); 212712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 213712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 214712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 215712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Create an empty collection 216712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 217712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills @Test 218712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills public void empty() { 219712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings(); 220712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.fillBucketSettings(bucketSettings, Integer.MAX_VALUE); 221712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills assertThat(bucketSettings, channelsAre()); 22239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 22339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertEquals(Collections.<Integer>emptySet(), 2249dc9a8750ecd1ab25c5b4c7d17c8930ca2ffb6c3Ningyuan Wang mChannelCollection.getScanFreqs()); 22539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 22639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.isEmpty()); 22739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelCollection.containsChannel(2400)); 2283219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills assertFalse(mChannelCollection.isAllChannels()); 229712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 230712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 231712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 232712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Add something to a collection and then clear it and make sure nothing is in it 233712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 234712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills @Test 235712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills public void clear() { 236712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addBand(WifiScanner.WIFI_BAND_24_GHZ); 237712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.clear(); 238712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 239712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings(); 240712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.fillBucketSettings(bucketSettings, Integer.MAX_VALUE); 241712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills assertThat(bucketSettings, channelsAre()); 24239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 24339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertEquals(Collections.<Integer>emptySet(), 2449dc9a8750ecd1ab25c5b4c7d17c8930ca2ffb6c3Ningyuan Wang mChannelCollection.getScanFreqs()); 24539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 24639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.isEmpty()); 24739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelCollection.containsChannel(2400)); 2483219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills assertFalse(mChannelCollection.isAllChannels()); 249712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 250712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 251712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 252712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Add a single band to the collection 253712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 254712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills @Test 255712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills public void addBand() { 256712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addBand(WifiScanner.WIFI_BAND_24_GHZ); 257712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 258712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings(); 259712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.fillBucketSettings(bucketSettings, Integer.MAX_VALUE); 260712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills assertThat(bucketSettings, bandIs(ALL_BANDS)); 26139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 2629dc9a8750ecd1ab25c5b4c7d17c8930ca2ffb6c3Ningyuan Wang assertNull(mChannelCollection.getScanFreqs()); 26339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 26439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelCollection.isEmpty()); 26539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(2400)); 26639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(5150)); 2673219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills assertTrue(mChannelCollection.isAllChannels()); 268712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 269712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 270712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 271712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Add a single channel to the collection 272712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 273712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills @Test 274712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills public void addChannel_single() { 275712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(2400); 276712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 277712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings(); 278712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.fillBucketSettings(bucketSettings, Integer.MAX_VALUE); 279712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills assertThat(bucketSettings, channelsAre(2400)); 28039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 28139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertEquals(new HashSet<Integer>(Arrays.asList(2400)), 2829dc9a8750ecd1ab25c5b4c7d17c8930ca2ffb6c3Ningyuan Wang mChannelCollection.getScanFreqs()); 28339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 28439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelCollection.isEmpty()); 28539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(2400)); 28639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelCollection.containsChannel(5150)); 2873219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills assertFalse(mChannelCollection.isAllChannels()); 288712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 289712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 290712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 291712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Add a multiple channels to the collection 292712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 293712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills @Test 294712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills public void addChannel_multiple() { 295712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(2400); 296712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(2450); 297712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 298712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings(); 299712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.fillBucketSettings(bucketSettings, Integer.MAX_VALUE); 300712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills assertThat(bucketSettings, channelsAre(2400, 2450)); 30139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 30239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertEquals(new HashSet<Integer>(Arrays.asList(2400, 2450)), 3039dc9a8750ecd1ab25c5b4c7d17c8930ca2ffb6c3Ningyuan Wang mChannelCollection.getScanFreqs()); 30439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 30539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelCollection.isEmpty()); 30639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(2400)); 30739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelCollection.containsChannel(5150)); 3083219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills assertFalse(mChannelCollection.isAllChannels()); 309712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 310712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 311712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 312712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Add a band and channel that is on that band 313712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 314712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills @Test 315712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills public void addChannel_and_addBand_sameBand() { 316712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addBand(WifiScanner.WIFI_BAND_24_GHZ); 317712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(2400); 318712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 319712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings(); 320712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.fillBucketSettings(bucketSettings, Integer.MAX_VALUE); 321712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills assertThat(bucketSettings, bandIs(ALL_BANDS)); 32239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 3239dc9a8750ecd1ab25c5b4c7d17c8930ca2ffb6c3Ningyuan Wang assertNull(mChannelCollection.getScanFreqs()); 32439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 32539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelCollection.isEmpty()); 32639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(2400)); 32739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(5150)); 3283219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills assertTrue(mChannelCollection.isAllChannels()); 329712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 330712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 331712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 332712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Add a band and channel that is not that band 333712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 334712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills @Test 335712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills public void addChannel_and_addBand_withDifferentBandChannel() { 336712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addBand(WifiScanner.WIFI_BAND_24_GHZ); 337712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(5150); 338712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 339712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings(); 340712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.fillBucketSettings(bucketSettings, Integer.MAX_VALUE); 341712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills assertThat(bucketSettings, bandIs(ALL_BANDS)); 34239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 3439dc9a8750ecd1ab25c5b4c7d17c8930ca2ffb6c3Ningyuan Wang assertNull(mChannelCollection.getScanFreqs()); 34439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 34539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelCollection.isEmpty()); 34639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(2400)); 34739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(5150)); 3483219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills assertTrue(mChannelCollection.isAllChannels()); 34939175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills } 35039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 35139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills /** 35239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills * Add a band that should contain all channels 35339175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills */ 35439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills @Test 35539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills public void addChannel_and_addBand_all() { 35639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills mChannelCollection.addBand(WifiScanner.WIFI_BAND_BOTH_WITH_DFS); 35739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills mChannelCollection.addChannel(5150); 35839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 35939175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings(); 36039175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills mChannelCollection.fillBucketSettings(bucketSettings, Integer.MAX_VALUE); 36139175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertThat(bucketSettings, bandIs(WifiScanner.WIFI_BAND_BOTH_WITH_DFS)); 36239175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 3639dc9a8750ecd1ab25c5b4c7d17c8930ca2ffb6c3Ningyuan Wang assertNull(mChannelCollection.getScanFreqs()); 36439175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills 36539175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertFalse(mChannelCollection.isEmpty()); 36639175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(2400)); 36739175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(5150)); 36839175cc807488dd849e2c530f8be30dd674fbd9fMitchell Wills assertTrue(mChannelCollection.containsChannel(5600)); 3693219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills assertTrue(mChannelCollection.isAllChannels()); 370712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 371712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 372712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 373712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Add enough channels on a single band that the max channels is exceeded 374712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 375712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills @Test 376712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills public void addChannel_exceedMaxChannels() { 377712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(5600); 378712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(5650); 379712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(5660); 380712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 381712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings(); 382712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.fillBucketSettings(bucketSettings, 2); 383712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills assertThat(bucketSettings, bandIs(ALL_BANDS)); 3843219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills assertFalse(mChannelCollection.isAllChannels()); // can't determine from just channels 385712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 386712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 387712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills /** 388712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills * Add enough channels across multiple bands that the max channels is exceeded 389712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills */ 390712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills @Test 391712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills public void addChannel_exceedMaxChannelsOnMultipleBands() { 392712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(2400); 393712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(2450); 394712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.addChannel(5150); 395712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills 396712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings(); 397712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills mChannelCollection.fillBucketSettings(bucketSettings, 2); 398712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills assertThat(bucketSettings, bandIs(ALL_BANDS)); 3993219e97566a093ed10b2a9d6fe77ed9089084d63Mitchell Wills assertFalse(mChannelCollection.isAllChannels()); // can't determine from just channels 400712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 401712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills } 402712ef6246834caeac3d5b06bea08e85d6b29cd7aMitchell Wills} 403