blob: ce9a7610b18c5bf5513592323ea47906d110c3a4 [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.wifi.scanner;
import static com.android.server.wifi.ScanTestUtil.channelsToNativeSettings;
import static com.android.server.wifi.ScanTestUtil.channelsToSpec;
import static com.android.server.wifi.ScanTestUtil.createRequest;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import android.net.wifi.WifiScanner;
import androidx.test.filters.SmallTest;
import com.android.server.wifi.WifiBaseTest;
import com.android.server.wifi.WifiNative;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
/**
* Unit tests for {@link com.android.server.wifi.scanner.ChannelHelper}.
*/
@RunWith(Enclosed.class) // WARNING: tests cannot be declared in the outer class
public class ChannelHelperTest extends WifiBaseTest {
/**
* Unit tests for
* {@link com.android.server.wifi.scanner.ChannelHelper#toString}.
*/
@SmallTest
public static class ToStringTest extends WifiBaseTest {
/**
* Compute a string representing the channels in a ScanSettings with a band set.
*/
@Test
public void scanSettings_band() {
WifiScanner.ScanSettings scanSettings = createRequest(WifiScanner.WIFI_BAND_BOTH,
10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
assertEquals("24Ghz & 5Ghz (no DFS)", ChannelHelper.toString(scanSettings));
}
/**
* Compute a string representing the channels in a ScanSettings with a list of channels set.
*/
@Test
public void scanSettings_channels() {
WifiScanner.ScanSettings scanSettings = createRequest(channelsToSpec(5150, 2400),
10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
assertEquals("[5150,2400]", ChannelHelper.toString(scanSettings));
}
/**
* Compute a string representing the channels in a BucketSettings with a band set.
*/
@Test
public void bucketSettings_band() {
WifiScanner.ScanSettings scanSettings = createRequest(WifiScanner.WIFI_BAND_5_GHZ,
10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
assertEquals("5Ghz (no DFS)", ChannelHelper.toString(scanSettings));
}
/**
* Compute a string representing the channels in a BucketSettings with a list of channels
* set.
*/
@Test
public void bucketSettings_channels() {
WifiScanner.ScanSettings scanSettings = createRequest(channelsToSpec(2400, 5100),
10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
assertEquals("[2400,5100]", ChannelHelper.toString(scanSettings));
}
}
/**
* Unit tests for
* {@link com.android.server.wifi.scanner.ChannelHelper#bandToString}.
*/
@Test
public void bandToString_ShouldReturnApproapriateString() {
assertEquals("unspecified", ChannelHelper.bandToString(
WifiScanner.WIFI_BAND_UNSPECIFIED));
assertEquals("24Ghz", ChannelHelper.bandToString(WifiScanner.WIFI_BAND_24_GHZ));
assertEquals("5Ghz (no DFS)", ChannelHelper.bandToString(WifiScanner.WIFI_BAND_5_GHZ));
assertEquals("5Ghz (DFS only)", ChannelHelper.bandToString(
WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY));
assertEquals("5Ghz (DFS incl)", ChannelHelper.bandToString(
WifiScanner.WIFI_BAND_5_GHZ_WITH_DFS));
assertEquals("24Ghz & 5Ghz (no DFS)", ChannelHelper.bandToString(
WifiScanner.WIFI_BAND_BOTH));
assertEquals("24Ghz & 5Ghz (DFS incl)", ChannelHelper.bandToString(
WifiScanner.WIFI_BAND_BOTH_WITH_DFS));
assertEquals("24Ghz & 5Ghz (DFS incl) & 6Ghz", ChannelHelper.bandToString(
WifiScanner.WIFI_BAND_24_5_WITH_DFS_6_GHZ));
assertEquals("2.4 GHz & 5 GHz (no DFS) & 6GHz & 60GHz", ChannelHelper.bandToString(
WifiScanner.WIFI_BAND_24_5_6_60_GHZ));
assertEquals("2.4 GHz & 5Ghz (DFS incl) & 6GHz & 60GHz", ChannelHelper.bandToString(
WifiScanner.WIFI_BAND_24_5_WITH_DFS_6_60_GHZ));
assertEquals("invalid band", ChannelHelper.bandToString(-235342));
}
/**
* Unit tests for
* {@link com.android.server.wifi.scanner.ChannelHelper.ChannelCollection}.
*/
@SmallTest
public static class ChannelCollectionTest extends WifiBaseTest {
ChannelHelper.ChannelCollection mChannelCollection;
/**
* Called before each test
* Create an instance of ChannelCollection that calls all real methods, but allows mocking
* of abstract methods.
*/
@Before
public void setUp() throws Exception {
mChannelCollection = mock(ChannelHelper.ChannelCollection.class);
doCallRealMethod().when(mChannelCollection)
.addChannels(any(WifiScanner.ScanSettings.class));
doCallRealMethod().when(mChannelCollection)
.addChannels(any(WifiNative.BucketSettings.class));
}
/**
* Verify adding channels from a WifiScanner.ScanSettings with channels
*/
@Test
public void addChannelsWifiScanner_channels() {
WifiScanner.ScanSettings testSettings = createRequest(channelsToSpec(5150, 2400),
10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
mChannelCollection.addChannels(testSettings);
verify(mChannelCollection).addChannel(2400);
verify(mChannelCollection).addChannel(5150);
}
/**
* Verify adding channels from a WifiScanner.ScanSettings with bands
*/
@Test
public void addChannelsWifiScanner_band() {
WifiScanner.ScanSettings testSettings = createRequest(WifiScanner.WIFI_BAND_BOTH,
10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
mChannelCollection.addChannels(testSettings);
verify(mChannelCollection).addBand(WifiScanner.WIFI_BAND_BOTH);
}
/**
* Verify adding channels from a WifiNative.BucketSetting with channels
*/
@Test
public void addChannelsWifiNativeBucket_channels() {
WifiNative.BucketSettings testBucket = new WifiNative.BucketSettings();
testBucket.band = WifiScanner.WIFI_BAND_UNSPECIFIED;
testBucket.num_channels = 2;
testBucket.channels = channelsToNativeSettings(2450, 5100);
mChannelCollection.addChannels(testBucket);
verify(mChannelCollection).addChannel(2450);
verify(mChannelCollection).addChannel(5100);
}
/**
* Verify adding channels from a WifiNative.BucketSetting with bands
*/
@Test
public void addChannelsWifiNativeBucket_band() {
WifiNative.BucketSettings testBucket = new WifiNative.BucketSettings();
testBucket.band = WifiScanner.WIFI_BAND_5_GHZ;
mChannelCollection.addChannels(testBucket);
verify(mChannelCollection).addBand(WifiScanner.WIFI_BAND_5_GHZ);
}
}
}