1 /* 2 * Copyright (C) 2016, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <vector> 18 19 #include <gtest/gtest.h> 20 21 #include "android/net/wifi/IWifiScannerImpl.h" 22 #include "wificond/scanning/channel_settings.h" 23 #include "wificond/scanning/hidden_network.h" 24 #include "wificond/scanning/pno_network.h" 25 #include "wificond/scanning/pno_settings.h" 26 #include "wificond/scanning/single_scan_settings.h" 27 28 using ::android::net::wifi::IWifiScannerImpl; 29 using ::com::android::server::wifi::wificond::ChannelSettings; 30 using ::com::android::server::wifi::wificond::HiddenNetwork; 31 using ::com::android::server::wifi::wificond::PnoNetwork; 32 using ::com::android::server::wifi::wificond::PnoSettings; 33 using ::com::android::server::wifi::wificond::SingleScanSettings; 34 using std::vector; 35 36 namespace android { 37 namespace wificond { 38 39 namespace { 40 41 const uint8_t kFakeSsid[] = 42 {'G', 'o', 'o', 'g', 'l', 'e', 'G', 'u', 'e', 's', 't'}; 43 const uint8_t kFakeSsid1[] = 44 {'A', 'n', 'd', 'r', 'o', 'i', 'd', 'A', 'P', 'T', 'e', 's', 't'}; 45 46 constexpr int32_t kFakePnoIntervalMs = 20000; 47 constexpr int32_t kFakePnoMin2gRssi = -80; 48 constexpr int32_t kFakePnoMin5gRssi = -85; 49 50 constexpr uint32_t kFakeFrequency = 5260; 51 constexpr uint32_t kFakeFrequency1 = 2460; 52 constexpr uint32_t kFakeFrequency2 = 2500; 53 54 } // namespace 55 56 class ScanSettingsTest : public ::testing::Test { 57 }; 58 59 TEST_F(ScanSettingsTest, ChannelSettingsParcelableTest) { 60 ChannelSettings channel_settings; 61 channel_settings.frequency_ = kFakeFrequency; 62 63 Parcel parcel; 64 EXPECT_EQ(::android::OK, channel_settings.writeToParcel(&parcel)); 65 66 ChannelSettings channel_settings_copy; 67 parcel.setDataPosition(0); 68 EXPECT_EQ(::android::OK, channel_settings_copy.readFromParcel(&parcel)); 69 70 EXPECT_EQ(channel_settings, channel_settings_copy); 71 } 72 73 TEST_F(ScanSettingsTest, HiddenNetworkParcelableTest) { 74 HiddenNetwork hidden_network; 75 hidden_network.ssid_ = 76 vector<uint8_t>(kFakeSsid, kFakeSsid + sizeof(kFakeSsid)); 77 78 Parcel parcel; 79 EXPECT_EQ(::android::OK, hidden_network.writeToParcel(&parcel)); 80 81 HiddenNetwork hidden_network_copy; 82 parcel.setDataPosition(0); 83 EXPECT_EQ(::android::OK, hidden_network_copy.readFromParcel(&parcel)); 84 85 EXPECT_EQ(hidden_network, hidden_network_copy); 86 } 87 88 TEST_F(ScanSettingsTest, SingleScanSettingsParcelableTest) { 89 SingleScanSettings scan_settings; 90 91 ChannelSettings channel, channel1, channel2; 92 channel.frequency_ = kFakeFrequency; 93 channel1.frequency_ = kFakeFrequency1; 94 channel2.frequency_ = kFakeFrequency2; 95 scan_settings.scan_type_ = IWifiScannerImpl::SCAN_TYPE_LOW_SPAN; 96 97 HiddenNetwork network; 98 network.ssid_ = 99 vector<uint8_t>(kFakeSsid, kFakeSsid + sizeof(kFakeSsid)); 100 101 scan_settings.channel_settings_ = {channel, channel1, channel2}; 102 scan_settings.hidden_networks_ = {network}; 103 104 Parcel parcel; 105 EXPECT_EQ(::android::OK, scan_settings.writeToParcel(&parcel)); 106 107 SingleScanSettings scan_settings_copy; 108 parcel.setDataPosition(0); 109 EXPECT_EQ(::android::OK, scan_settings_copy.readFromParcel(&parcel)); 110 111 EXPECT_EQ(scan_settings, scan_settings_copy); 112 } 113 114 TEST_F(ScanSettingsTest, SingleScanSettingsParcelableWriteInvalidScanType) { 115 SingleScanSettings scan_settings; 116 117 ChannelSettings channel, channel1, channel2; 118 channel.frequency_ = kFakeFrequency; 119 channel1.frequency_ = kFakeFrequency1; 120 channel2.frequency_ = kFakeFrequency2; 121 scan_settings.scan_type_ = IWifiScannerImpl::SCAN_TYPE_DEFAULT; 122 123 HiddenNetwork network; 124 network.ssid_ = 125 vector<uint8_t>(kFakeSsid, kFakeSsid + sizeof(kFakeSsid)); 126 127 scan_settings.channel_settings_ = {channel, channel1, channel2}; 128 scan_settings.hidden_networks_ = {network}; 129 130 Parcel parcel; 131 EXPECT_EQ(::android::BAD_VALUE, scan_settings.writeToParcel(&parcel)); 132 } 133 134 135 TEST_F(ScanSettingsTest, PnoNetworkParcelableTest) { 136 PnoNetwork pno_network; 137 pno_network.ssid_ = 138 vector<uint8_t>(kFakeSsid, kFakeSsid + sizeof(kFakeSsid)); 139 pno_network.is_hidden_ = true; 140 141 Parcel parcel; 142 EXPECT_EQ(::android::OK, pno_network.writeToParcel(&parcel)); 143 144 PnoNetwork pno_network_copy; 145 parcel.setDataPosition(0); 146 EXPECT_EQ(::android::OK, pno_network_copy.readFromParcel(&parcel)); 147 148 EXPECT_EQ(pno_network, pno_network_copy); 149 } 150 151 TEST_F(ScanSettingsTest, PnoSettingsParcelableTest) { 152 PnoSettings pno_settings; 153 154 PnoNetwork network, network1; 155 network.ssid_ = 156 vector<uint8_t>(kFakeSsid, kFakeSsid + sizeof(kFakeSsid)); 157 network.is_hidden_ = true; 158 network1.ssid_ = 159 vector<uint8_t>(kFakeSsid1, kFakeSsid1 + sizeof(kFakeSsid1)); 160 network1.is_hidden_ = false; 161 162 pno_settings.interval_ms_ = kFakePnoIntervalMs; 163 pno_settings.min_2g_rssi_ = kFakePnoMin2gRssi; 164 pno_settings.min_5g_rssi_ = kFakePnoMin5gRssi; 165 166 pno_settings.pno_networks_ = {network, network1}; 167 168 Parcel parcel; 169 EXPECT_EQ(::android::OK, pno_settings.writeToParcel(&parcel)); 170 171 PnoSettings pno_settings_copy; 172 parcel.setDataPosition(0); 173 EXPECT_EQ(::android::OK, pno_settings_copy.readFromParcel(&parcel)); 174 175 EXPECT_EQ(pno_settings, pno_settings_copy); 176 } 177 178 179 180 } // namespace wificond 181 } // namespace android 182